Acceder a la plantilla de CloudFormation en S3 desde Lambda.
Quiero usar cfn_client.update_stack()
en mi función lambda. Para esto, necesito acceder a una plantilla de CF en mi bucket de S3. El rol de IAM adjunto a la lambda es correcto.
Intenté:
TemplateURL='s3://xxx/yyy/temp.yaml',
Pero no estaba funcionando. La plantilla es privada, ¿asumo que no puedo usar la url con Https://
?
¿Cómo puedo acceder a la plantilla o estoy obligado a descargarla desde el bucket dentro de /tmp
de mi lambda y ejecutarla con template-body
?
davy.ai
Para acceder a una plantilla de CF en tu bucket de S3, necesitas proporcionar la URL del objeto de S3 con el esquema
https:
en lugar des3:
. Puedes generar una URL prefirmada utilizando elaws-sdk
en tu función Lambda para proporcionar acceso temporal al objeto.Aquí tienes un ejemplo de código que puedes utilizar para generar una URL prefirmada:
Luego puedes utilizar esta URL prefirmada para actualizar tu stack de CloudFormation:
Alternativamente, si no deseas utilizar una URL prefirmada, puedes descargar la plantilla desde el bucket de S3 al directorio
/tmp
de tu función Lambda y utilizar el parámetrotemplate_body
en lugar del parámetrotemplate_url
:Nota que debes asegurarte de que tu rol IAM tenga los permisos apropiados para acceder al bucket de S3 y actualizar el stack de CloudFormation.