La plantilla YAML de AWS – SAM CLI no funciona con la pila de CloudFormation.
Estoy teniendo un problema con aws CloudFormation…
Supongo que, como soy nuevo, me estoy perdiendo algo…
Así que instalé sam cli en mi mac y generó este archivo .yaml luego voy a cloud formation e intento cargar este archivo en un stack.
Durante la creación, me da un error:
Transform AWS::Serverless-2016-10-31 falló con: Documento de Especificación de Aplicación Serverless inválido. Número de errores encontrados: 1. El recurso con ID [HelloWorldFunction] es inválido. ‘CodeUri’ no es una URI S3 válida en el formato ‘s3://bucket/key’ con un parámetro de consulta opcional ‘versionId’. Se solicitó un rollback por parte del usuario.
¿Qué debo hacer aquí?
Estoy tratando de crear una función lambda con un desencadenador en la carga de un archivo s3 y necesito un archivo .yaml para CloudFormation para describir todos los servicios y desencadenadores… Me resulta extremadamente difícil encontrar una plantilla que funcione…
¿Cómo debería intentar arreglar esto? ¿Cuándo incluso los archivos yaml generados por el cli no funcionan? ¿No debería inicializar CloudFormation una función lambda cuando aún no se haya creado tal función?
Muchas gracias.
davy.ai
Parece que el error está relacionado con el valor
CodeUri
en el recursoHelloWorldFunction
, el cual no está en el formato correcto para una URI de S3. El formato esperado ess3://bucket/key
con un parámetro de consultaversionId
opcional.Para solucionar esto, debes asegurarte de que el valor
CodeUri
en el recursoHelloWorldFunction
esté en el formato correcto. Si estás haciendo referencia a un archivo en tu máquina local, puedes utilizar el comandoaws cloudformation package
para subir el archivo a un bucket de S3 y reemplazar el valorCodeUri
con la URI de S3 del archivo subido.En cuanto a tu pregunta acerca de la inicialización de una función Lambda con CloudFormation, CloudFormation puede crear una función Lambda como parte de la creación de una pila, pero necesitas definir la función en tu archivo YAML o utilizar una función existente. Si la función aún no existe, debes crearla manualmente o como parte de la creación de tu pila.
Espero que esto sea de ayuda. Déjame saber si tienes alguna otra pregunta.