

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Aggiornare la configurazione di una funzione Lambda con CodeBuild Lambda Python
<a name="sample-lambda-boto3-python"></a>

Il seguente esempio di Python utilizza [Boto3](https://aws.amazon.com/sdk-for-python/) e Lambda Python per aggiornare la configurazione di una funzione CodeBuild Lambda. Questo esempio può essere esteso per gestire altre risorse a livello di codice. AWS Per ulteriori informazioni, consultate la documentazione di [Boto3](https://aws.amazon.com/sdk-for-python/).

## Prerequisiti
<a name="sample-lambda-boto3-python.prerequisites"></a>

Crea o trova una funzione Lambda nel tuo account.

Questo esempio presuppone che tu abbia già creato una funzione Lambda nel tuo account e che la CodeBuild utilizzerai per aggiornare le variabili di ambiente della funzione Lambda. Per ulteriori informazioni sulla configurazione di una funzione Lambda CodeBuild, guarda l'[Implementa una funzione Lambda utilizzando AWS SAM con Lambda Java CodeBuild](sample-lambda-sam-gradle.md)esempio o visita. [AWS Lambda](https://aws.amazon.com/lambda/)

## Configura il tuo repository dei sorgenti
<a name="sample-lambda-boto3-python.set-up-repo"></a>

Crea un repository di sorgenti per archiviare lo script python Boto3.

**Per configurare il repository dei sorgenti**

1. Copia il seguente script python in un nuovo file chiamato. `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. Carica il file python in un repository di sorgenti supportato. Per un elenco dei tipi di sorgenti supportati, consulta. [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html)

## Crea un progetto CodeBuild Lambda Python
<a name="sample-lambda-boto3-python.create-project"></a>

Crea un progetto CodeBuild Lambda Python.

**Per creare il tuo progetto CodeBuild Lambda Java**

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

1.  Se viene visualizzata una pagina di CodeBuild informazioni, scegli **Crea** progetto di compilazione. Altrimenti, nel riquadro di navigazione, espandi **Crea**, scegli **Crea progetti**, quindi scegli **Crea progetto di compilazione**. 

1. In **Project name (Nome progetto)** immettere un nome per questo progetto di compilazione. I nomi dei progetti di compilazione devono essere univoci per ogni AWS account. Puoi anche includere una descrizione opzionale del progetto di compilazione per aiutare gli altri utenti a capire a cosa serve questo progetto.

1. In **Source**, seleziona il repository di origine in cui si trova il AWS SAM progetto.

1. In **Environment (Ambiente)**:
   + Per **Compute**, seleziona **Lambda**.
   + Per **Runtime (s)**, selezionate **Python**.
   + Per **Image**, seleziona **aws/codebuild/amazonlinux-x86\$164-lambda-standard:python3.12**.
   + **Per **Ruolo di servizio,** lascia selezionata l'opzione Nuovo ruolo di servizio.** Prendi nota del **nome del ruolo**. Ciò sarà necessario quando aggiornerai le autorizzazioni IAM del progetto più avanti in questo esempio.

1. Scegliere **Create build project (Crea progetto di compilazione)**.

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/). 

1. Nel riquadro di navigazione, scegli **Ruoli** e seleziona il ruolo di servizio associato al tuo progetto. Puoi trovare il tuo ruolo nel progetto CodeBuild selezionando il progetto di compilazione, scegliendo **Modifica**, **Ambiente** e quindi **Ruolo di servizio**.

1. Scegli la scheda **Relazioni di attendibilità** e quindi **Modifica policy di attendibilità**.

1. Aggiungi la seguente policy in linea al tuo ruolo IAM. Questo verrà utilizzato per implementare la tua AWS SAM infrastruttura in un secondo momento. Per ulteriori informazioni, consulta [Aggiunta e rimozione di autorizzazioni per identità IAM](https://docs.aws.amazon.com//IAM/latest/UserGuide/access_policies_manage-attach-detach.html) nella *Guida per l’utente di IAM *.

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

****  

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

------

## Configura il progetto buildspec
<a name="sample-lambda-boto3-python.set-up-buildspec"></a>

Per aggiornare la funzione Lambda, lo script legge le variabili di ambiente da buildspec per trovare il nome della funzione Lambda, il nome della variabile di ambiente e il valore della variabile di ambiente.

**Per configurare il tuo progetto buildspec**

1. **Nella CodeBuild console, seleziona il tuo progetto di build, quindi scegli **Modifica** e Buildspec.**

1. **In **Buildspec**, scegli **Inserisci comandi di compilazione** e poi Passa all'editor.**

1. Elimina i comandi di compilazione precompilati e incollali nella seguente buildspec.

   ```
   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. Selezionare **Update buildspec (Aggiorna buildspec)**.

## Aggiorna la tua configurazione Lambda
<a name="sample-lambda-boto3-python.update"></a>

Usa CodeBuild Lambda Python per aggiornare automaticamente la configurazione della tua funzione Lambda.

**Per aggiornare la configurazione della funzione Lambda**

1. Selezionare **Start build (Avvia compilazione)**.

1. Una volta terminata la compilazione, accedi alla tua funzione Lambda.

1. Seleziona **Configurazione** e poi Variabili di **ambiente**. Dovresti vedere una nuova variabile di ambiente con chiave `FEATURE_ENABLED` e valore`true`.

## Pulisci la tua infrastruttura
<a name="sample-lambda-boto3-python.clean-up"></a>

Per evitare ulteriori addebiti per le risorse utilizzate durante questo tutorial, elimina le risorse create per il CodeBuild progetto.

**Per ripulire la tua infrastruttura**

1. Accedi alla CloudWatch console ed elimina i gruppi di CloudWatch log associati al tuo CodeBuild progetto.

1. Vai alla CodeBuild console ed elimina il tuo CodeBuild progetto scegliendo **Elimina progetto di compilazione**.

1. Se hai creato una funzione Lambda ai fini di questo esempio, scegli la funzione **Azioni** ed **Elimina per ripulire la funzione** Lambda.

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

Se vuoi estendere questo esempio per gestire altre AWS risorse usando AWS CodeBuild Lambda Python:
+ Aggiorna lo script Python per modificare le nuove risorse usando Boto3.
+ Aggiorna il ruolo IAM associato al tuo CodeBuild progetto per disporre delle autorizzazioni per le nuove risorse.
+ Aggiungi eventuali nuove variabili di ambiente associate alle nuove risorse al tuo buildspec.