Resolución de problemas relacionados con las propiedades de solo escritura en recursos de AWS::Lambda::Function
En este tema se explica cómo resolver los problemas relacionados con las propiedades de solo escritura de los recursos de AWS::Lambda::Function cuando se utiliza el generador de IaC.
Problema
El recurso de AWS::Lambda::Function tiene tres conjuntos de propiedades que se excluyen mutuamente para especificar el código de Lambda:
-
Propiedades
Code/S3BucketyCode/S3Keyy, de manera opcional, la propiedadCode/S3ObjectVersion -
Propiedad
Code/ImageUri -
Propiedad
Code/ZipFile
Solo se puede usar uno de estos conjuntos para un recurso de AWS::Lambda::Function determinado.
El generador de IaC no puede determinar qué conjunto de propiedades exclusivas de solo escritura se utilizó para crear o actualizar el recurso. Como resultado, incluye solo el primer conjunto de propiedades de la plantilla generada. Se omiten las propiedades Code/ImageUri y Code/ZipFile.
Además, el generador de IaC emite las siguientes advertencias:
-
MUTUALLY_EXCLUSIVE_PROPERTIES: advierte queCode/S3BucketyCode/S3Keyse identifican como propiedades que se excluyen mutuamente. -
UNSUPPORTED_PROPERTIES: advierte que la propiedadCode/S3ObjectVersionno es compatible.
Para incluir recursos de AWS::Lambda::Function en una plantilla generada, debe descargar y actualizar la plantilla con las propiedades de código correctas.
Resolución
Si almacena el código Lambda en un bucket de Amazon S3 y no utiliza la propiedad S3ObjectVersion, puede importar la plantilla generada sin ninguna modificación. El generador de IaC le pedirá el bucket de Amazon S3 y la clave como parámetros de plantilla durante la operación de importación.
Si almacena el código Lambda como un repositorio de Amazon ECR, puede actualizar la plantilla de acuerdo con las siguientes instrucciones:
-
Descargue la plantilla generada.
-
Elimine las propiedades y los parámetros correspondientes de las propiedades de
Code/S3BucketyCode/S3Keyde la plantilla generada. -
Sustituya las propiedades eliminadas de la plantilla generada por la propiedad
Code/ImageUriy especifique la URL del repositorio de Amazon ECR. -
Abra la plantilla generada en la consola del generador de IaC y pulse el botón Importar plantilla editada.
Si almacena el código Lambda en un archivo zip, puede actualizar la plantilla de acuerdo con las siguientes instrucciones:
-
Descargue la plantilla generada.
-
Elimine las propiedades y los parámetros correspondientes de las propiedades de
Code/S3BucketyCode/S3Keyde la plantilla generada. -
Sustituya las propiedades eliminadas de la plantilla generada por la propiedad
Code/ZipFile. -
Abra la plantilla generada en la consola del generador de IaC y pulse el botón Importar plantilla editada.
Si no tiene una copia del código Lambda, puede actualizar la plantilla según las siguientes instrucciones:
-
Utilice la acción de la API de AWS Lambda
GetFunction(por ejemplo, mediante el comandoaws lambda get-functionde la AWS CLI). -
En la respuesta, el parámetro
RepositoryTypeindicaS3si el código está en un bucket de Amazon S3 oECRsi el código se encuentra en un repositorio de Amazon ECR. -
En la respuesta, el parámetro
Locationcontiene una URL prefirmada que puede usar para descargar el paquete de implementación durante 10 minutos. Descargue el código. -
Cargue el archivo en un bucket de Amazon S3.
-
Ejecute una operación de importación con la plantilla generada y proporcione el nombre y la clave del bucket como valores de parámetro.