

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Comment résoudre les problèmes liés aux propriétés en écriture seule dans les ressources AWS::Lambda::Function
<a name="generate-IaC-lambda-function"></a>

Cette rubrique explique comment résoudre les problèmes liés aux propriétés en écriture seule dans les ressources [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-function.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-lambda-function.html) lorsque vous utilisez le générateur IaC.

## Problème
<a name="lambda-function-mutually-exclusive-properties-issue"></a>

La ressource `AWS::Lambda::Function` dispose de trois ensembles de propriétés mutuellement exclusifs pour spécifier le code Lambda :
+ Les propriétés `Code/S3Bucket` et `Code/S3Key`, et éventuellement la propriété `Code/S3ObjectVersion`
+ propriété `Code/ImageUri`
+ propriété `Code/ZipFile`

Un seul de ces ensembles peut être utilisé pour une ressource `AWS::Lambda::Function` donnée.

Le générateur IaC ne peut pas déterminer quel ensemble de propriétés exclusives en écriture seule a été utilisé pour créer ou mettre à jour la ressource. Par conséquent, il n’inclut que le premier ensemble de propriétés dans le modèle généré. Les propriétés `Code/ImageUri` et `Code/ZipFile` sont omises. 

En outre, le générateur IaC émet les avertissements suivants :
+ **`MUTUALLY_EXCLUSIVE_PROPERTIES`** : avertit que `Code/S3Bucket` et `Code/S3Key` sont identifiées comme des propriétés mutuellement exclusives.
+ **`UNSUPPORTED_PROPERTIES`** : avertit que la propriété `Code/S3ObjectVersion` n’est pas prise en charge.

Pour inclure des ressources `AWS::Lambda::Function` dans un modèle généré, vous devez télécharger et mettre à jour le modèle avec les propriétés de code correctes.

## Résolution
<a name="lambda-function-mutually-exclusive-properties-resolution"></a>

**Si vous stockez votre code Lambda dans un compartiment Amazon S3 et n’utilisez pas la propriété `S3ObjectVersion`**, vous pouvez importer le modèle généré sans aucune modification. Le générateur IaC vous demandera le compartiment Amazon S3 et la clé en tant que paramètres de modèle pendant l’opération d’importation.

****Si vous stockez votre code Lambda dans un référentiel Amazon ECR**, vous pouvez mettre à jour votre modèle en suivant les instructions suivantes :**

1. Téléchargez le modèle généré.

1. Supprimez les propriétés et les paramètres correspondants pour les propriétés `Code/S3Bucket` et `Code/S3Key` du modèle généré.

1. Remplacez les propriétés supprimées dans le modèle généré par la propriété `Code/ImageUri`, en spécifiant l’URL du référentiel Amazon ECR.

1. Ouvrez le modèle généré dans la console du générateur IAC et cliquez sur le bouton **Importer le modèle modifié**.

****Si vous stockez votre code Lambda dans un fichier zip**, vous pouvez mettre à jour votre modèle en suivant les instructions suivantes :**

1. Téléchargez le modèle généré.

1. Supprimez les propriétés et les paramètres correspondants pour les propriétés `Code/S3Bucket` et `Code/S3Key` du modèle généré.

1. Remplacez les propriétés supprimées dans le modèle généré par la propriété `Code/ZipFile`.

1. Ouvrez le modèle généré dans la console du générateur IAC et cliquez sur le bouton **Importer le modèle modifié**.

****Si vous ne disposez pas d’une copie de votre code Lambda**, vous pouvez mettre à jour votre modèle en suivant les instructions suivantes :**

1. Utilisez l'action AWS Lambda [https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunction.html)API (par exemple, à l'aide de la [https://docs.aws.amazon.com/cli/latest/reference/lambda/get-function.html](https://docs.aws.amazon.com/cli/latest/reference/lambda/get-function.html) AWS CLI commande).

1. Dans la réponse, le paramètre `RepositoryType` indique `S3` si le code se trouve dans un compartiment Amazon S3 ou `ECR` s’il se trouve dans un référentiel Amazon ECR.

1. Dans la réponse, le paramètre `Location` contient une URL pré-signée que vous pouvez utiliser pour télécharger le package de déploiement pendant 10 minutes. Téléchargez le code.

1. Téléchargez le code dans un compartiment Amazon S3.

1. Exécutez une opération d’importation avec le modèle généré et fournissez le nom du compartiment et la clé comme valeurs de paramètre.