Apariencia
❌ Error: Security Constraints Not Satisfied! en sam deploy --guided
Clase 8 ·
sam deploy --guidedsobre02-Ejercicios/Clase-08/PYT30JUL26/S08· caso real de Styp, con cuenta AWS propia
🧨 Qué pasó
Corriendo sam deploy --guided (después de Disable rollback [y/N]: n), apareció esta pregunta:
InventoryFunction has no authentication. Is this okay? [y/N]:Se contestó y una vez, pero la MISMA pregunta volvió a aparecer varias veces más — en un intento se dejó una repetición sin responder (Enter vacío) y en otro se contestó n por error en la última repetición. Cualquiera de los dos casos terminó igual:
Error: Security Constraints Not Satisfied!Y el deploy abortó sin crear ningún recurso.
🔍 Causa
Las versiones recientes del SAM CLI agregaron un chequeo de seguridad: si una función Lambda queda expuesta por API Gateway sin ningún mecanismo de autenticación (API key, JWT authorizer, IAM auth — nada), pregunta explícitamente si eso es intencional antes de desplegar, para evitar dejar una API pública abierta por accidente.
La pregunta no aparece una sola vez — aparece una vez POR CADA ruta HTTP sin autenticación. template.yaml (sección 6 de la Clase 8) declara 5 Events para InventoryFunction (Health, CreateInventory, GetInventory, UpdateInventory, ReserveInventory), y ninguna tiene un bloque Auth — por eso SAM pregunta 5 veces seguidas, una por ruta. Contestar que sí una sola vez (o dejar cualquiera de las 5 sin y) hace que el deploy entienda que NO está todo confirmado, y aborta con el error de arriba.
💡 No es un bug ni un error real de configuración — el proyecto a propósito no tiene autenticación, porque esta clase es sobre Lambda/DynamoDB, no sobre seguridad de APIs (eso ya se vio con JWT en la Clase 7). El chequeo de SAM es correcto en señalarlo; la respuesta correcta acá es "sí, es intencional".
✅ Solución
Volver a correr sam deploy --guided y contestar y a las 5 repeticiones, una por una, sin dejar ninguna en blanco ni escribir otra cosa:
InventoryFunction has no authentication. Is this okay? [y/N]: y ← 1 (Health)
InventoryFunction has no authentication. Is this okay? [y/N]: y ← 2 (CreateInventory)
InventoryFunction has no authentication. Is this okay? [y/N]: y ← 3 (GetInventory)
InventoryFunction has no authentication. Is this okay? [y/N]: y ← 4 (UpdateInventory)
InventoryFunction has no authentication. Is this okay? [y/N]: y ← 5 (ReserveInventory)Como no se llegó a guardar samconfig.toml en los intentos fallidos (el asistente aborta antes de esa pregunta), sam deploy --guided vuelve a pedir Stack Name, Region, etc. desde cero — es normal, no significa que algo quedó mal configurado.
⚠️ Si algún día se quisiera automatizar este deploy (por ejemplo, en un pipeline CI/CD, tema de la Clase 11) sin responder preguntas a mano, existe el flag
--no-confirm-changeset— pero no salta este chequeo de seguridad puntual; para eso hay que agregar explícitamente un bloqueAuthen cadaEventsdeltemplate.yaml, o aceptar el riesgo de forma no interactiva con las variables/flags que documentasam deploy --help.