

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.

# Mettre à jour une configuration de fonction Lambda avec CodeBuild Lambda Python
<a name="sample-lambda-boto3-python"></a>

L'exemple Python suivant utilise [Boto3](https://aws.amazon.com/sdk-for-python/) et Lambda CodeBuild Python pour mettre à jour la configuration d'une fonction Lambda. Cet exemple peut être étendu pour gérer d'autres AWS ressources par programmation. Pour plus d'informations, consultez la documentation de [Boto3](https://aws.amazon.com/sdk-for-python/).

## Conditions préalables
<a name="sample-lambda-boto3-python.prerequisites"></a>

Créez ou trouvez une fonction Lambda dans votre compte.

Cet exemple suppose que vous avez déjà créé une fonction Lambda dans votre compte et que vous l'utiliserez CodeBuild pour mettre à jour les variables d'environnement de la fonction Lambda. Pour plus d'informations sur la configuration d'une fonction Lambda via CodeBuild, consultez l'[Déployer une fonction Lambda à l'aide de AWS SAM CodeBuild Lambda Java](sample-lambda-sam-gradle.md)exemple ou rendez-vous sur. [AWS Lambda](https://aws.amazon.com/lambda/)

## Configurez votre référentiel de sources
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Créez un dépôt source pour stocker votre script python Boto3.

**Pour configurer le référentiel source**

1. Copiez le script python suivant dans un nouveau fichier appelé`update_lambda_environment_variables.py`.

   ```
   import boto3
   from os import environ
   
   
   def update_lambda_env_variable(lambda_client):
       lambda_function_name = environ['LAMBDA_FUNC_NAME']
       lambda_env_variable = environ['LAMBDA_ENV_VARIABLE']
       lambda_env_variable_value = environ['LAMBDA_ENV_VARIABLE_VALUE']
       print("Updating lambda function " + lambda_function_name + " environment variable "
             + lambda_env_variable + " to " + lambda_env_variable_value)
       lambda_client.update_function_configuration(
           FunctionName=lambda_function_name,
           Environment={
               'Variables': {
                   lambda_env_variable: lambda_env_variable_value
               }
           },
       )
   
   
   if __name__ == "__main__":
       region = environ['AWS_REGION']
       client = boto3.client('lambda', region)
       update_lambda_env_variable(client)
   ```

1. Téléchargez le fichier python dans un référentiel source compatible. Pour obtenir la liste des types de sources pris en charge, consultez [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Création d'un projet CodeBuild Lambda Python
<a name="sample-lambda-boto3-python.create-project"></a>

Créez un projet CodeBuild Lambda Python.

**Pour créer votre projet CodeBuild Lambda Java**

1. Ouvrez la AWS CodeBuild console sur [https://console.aws.amazon.com/codesuite/codebuild/home](https://console.aws.amazon.com/codesuite/codebuild/home).

1.  Si une page CodeBuild d'informations s'affiche, choisissez **Create build project**. Sinon, dans le volet de navigation, développez **Build****, choisissez Build projects**, puis **Create build project**. 

1. Dans **Nom du projet**, saisissez un nom pour ce projet de génération. Les noms des projets de construction doivent être uniques pour chaque AWS compte. Vous pouvez également inclure une description facultative du projet de construction pour aider les autres utilisateurs à comprendre à quoi sert ce projet.

1. Dans **Source**, sélectionnez le référentiel source dans lequel se trouve votre AWS SAM projet.

1. Dans **Environment (Environnement)** :
   + Pour **Compute**, sélectionnez **Lambda**.
   + Pour **Runtime (s)**, sélectionnez **Python**.
   + Pour **Image**, sélectionnez **aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12**.
   + Pour **Rôle de service**, laissez l'option **Nouveau rôle de service** sélectionnée. Notez le **nom du rôle**. Cela sera nécessaire lorsque vous mettrez à jour les autorisations IAM du projet ultérieurement dans cet exemple.

1. Choisissez **Créer un projet de génération**.

1. Ouvrez la console IAM à l’adresse [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. Dans le volet de navigation, choisissez **Rôles** et sélectionnez le rôle de service associé à votre projet. Vous pouvez trouver votre rôle dans le projet en CodeBuild sélectionnant votre projet de construction, en choisissant **Modifier**, **Environnement**, puis **Rôle de service**.

1. Sélectionnez l'onglet **Trust relationships** (Relations d'approbation), puis **Edit trust policy** (Modifier la politique d'approbation).

1. Ajoutez la politique intégrée suivante à votre rôle IAM. Cela sera utilisé pour déployer votre AWS SAM infrastructure ultérieurement. Pour plus d’informations, consultez [Ajout et suppression d’autorisations basées sur l’identité IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dans le *Guide de l’utilisateur IAM*.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "UpdateLambdaPermissions",
               "Effect": "Allow",
               "Action": [
                   "lambda:UpdateFunctionConfiguration"
               ],
               "Resource": [
                   "*"
               ]
           }
       ]
   }
   ```

------

## Configurer le buildspec du projet
<a name="sample-lambda-boto3-python.set-up-buildspec"></a>

Afin de mettre à jour la fonction Lambda, le script lit les variables d'environnement depuis le buildspec pour trouver le nom, le nom de la variable d'environnement et la valeur de la variable d'environnement de la fonction Lambda.

**Pour configurer le buildspec de votre projet**

1. Dans la CodeBuild console, sélectionnez votre projet de build, puis choisissez **Edit** et **Buildspec**.

1. Dans **Buildspec**, choisissez **Insérer des commandes de construction**, puis **Passer** à l'éditeur.

1. Supprimez les commandes de construction préremplies et collez les spécifications de construction suivantes.

   ```
   version: 0.2
   env:
     variables:
       LAMBDA_FUNC_NAME: "<lambda-function-name>"
       LAMBDA_ENV_VARIABLE: "FEATURE_ENABLED"
       LAMBDA_ENV_VARIABLE_VALUE: "true"
   phases:
     install:
       commands:
          - pip3 install boto3
     build:
       commands:
          - python3 update_lambda_environment_variables.py
   ```

1. Choisissez **Update buildspec (Mettre à jour buildspec)**.

## Mettez à jour votre configuration Lambda
<a name="sample-lambda-boto3-python.update"></a>

Utilisez CodeBuild Lambda Python pour mettre à jour automatiquement la configuration de votre fonction Lambda.

**Pour mettre à jour la configuration de votre fonction Lambda**

1. Choisissez **Démarrer la génération**.

1. Une fois le build terminé, accédez à votre fonction Lambda.

1. Sélectionnez **Configuration**, puis Variables d'**environnement**. Vous devriez voir une nouvelle variable d'environnement contenant une clé `FEATURE_ENABLED` et une valeur`true`.

## Nettoyez votre infrastructure
<a name="sample-lambda-boto3-python.clean-up"></a>

Pour éviter des frais supplémentaires pour les ressources que vous avez utilisées au cours de ce didacticiel, supprimez les ressources créées pour votre CodeBuild projet.

**Pour nettoyer votre infrastructure**

1. Accédez à la CloudWatch console et supprimez les groupes de CloudWatch journaux associés à votre CodeBuild projet.

1. Accédez à la CodeBuild console et supprimez votre CodeBuild projet en choisissant **Supprimer le projet de construction**.

1. Si vous avez créé une fonction Lambda aux fins de cet exemple, choisissez **Actions** et **fonction Supprimer pour nettoyer votre fonction** Lambda.

## Extensions
<a name="sample-lambda-boto3-python.extensions"></a>

Si vous souhaitez étendre cet exemple pour gérer d'autres AWS ressources à l'aide de AWS CodeBuild Lambda Python :
+ Mettez à jour le script Python pour modifier les nouvelles ressources à l'aide de Boto3.
+ Mettez à jour le rôle IAM associé à votre CodeBuild projet afin d'obtenir des autorisations pour les nouvelles ressources.
+ Ajoutez toutes les nouvelles variables d'environnement associées aux nouvelles ressources à vos spécifications de construction.