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/S3Bucket
yCode/S3Key
y, 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/S3Bucket
yCode/S3Key
se identifican como propiedades que se excluyen mutuamente. -
UNSUPPORTED_PROPERTIES
: advierte que la propiedadCode/S3ObjectVersion
no 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/S3Bucket
yCode/S3Key
de la plantilla generada. -
Sustituya las propiedades eliminadas de la plantilla generada por la propiedad
Code/ImageUri
y 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/S3Bucket
yCode/S3Key
de 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-function
de la AWS CLI). -
En la respuesta, el parámetro
RepositoryType
indicaS3
si el código está en un bucket de Amazon S3 oECR
si el código se encuentra en un repositorio de Amazon ECR. -
En la respuesta, el parámetro
Location
contiene 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.