

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à.

# Esegui build su calcolo AWS Lambda
<a name="lambda"></a>

AWS Lambda compute offre velocità di avvio ottimizzate per le tue build. AWS Lambda supporta build più veloci grazie a una minore latenza di avvio. AWS Lambda inoltre si ridimensiona automaticamente, quindi le build non attendono in coda per essere eseguite. Tuttavia, ci sono alcuni casi d'uso che AWS Lambda non sono supportati e, se hanno un impatto su di te, usa il calcolo EC2. Per ulteriori informazioni, consulta [Limitazioni di AWS Lambda calcolo](#lambda.limitations).

**Topics**
+ [

## Quali strumenti e runtime saranno inclusi nelle immagini docker dell'ambiente di runtime curato su cui vengono eseguiti? AWS Lambda
](#lambda.tools)
+ [

## Cosa succede se l'immagine curata non include gli strumenti di cui ho bisogno?
](#lambda.custom)
+ [

## In quali aree geografiche è AWS Lambda supportata l'elaborazione? CodeBuild
](#lambda.regions)
+ [

## Limitazioni di AWS Lambda calcolo
](#lambda.limitations)
+ [

# Implementa una funzione Lambda utilizzando AWS SAM con Lambda Java CodeBuild
](sample-lambda-sam-gradle.md)
+ [

# Crea un'app React a pagina singola con CodeBuild Lambda Node.js
](sample-lambda-react-nodejs.md)
+ [

# Aggiornare la configurazione di una funzione Lambda con CodeBuild Lambda Python
](sample-lambda-boto3-python.md)

## Quali strumenti e runtime saranno inclusi nelle immagini docker dell'ambiente di runtime curato su cui vengono eseguiti? AWS Lambda
<a name="lambda.tools"></a>

AWS Lambda supporta i seguenti strumenti: AWS CLI v2, AWS SAM CLI, git, go, Java, Node.js, Python, pip, Ruby e.NET.

## Cosa succede se l'immagine curata non include gli strumenti di cui ho bisogno?
<a name="lambda.custom"></a>

Se l'immagine curata non include gli strumenti necessari, puoi fornire un'immagine Docker di ambiente personalizzata che includa gli strumenti necessari.

**Nota**  
Lambda non supporta funzioni che utilizzano immagini container multi-architettura. Per ulteriori informazioni, consulta [Creare una funzione Lambda utilizzando un'immagine del contenitore nella Guida](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html#images-reqs) per gli *AWS Lambda sviluppatori*.

Tieni presente che sono necessarie le seguenti autorizzazioni Amazon ECR per utilizzare immagini personalizzate per il calcolo Lambda:

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecr:GetAuthorizationToken"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecr:BatchCheckLayerAvailability",
                "ecr:GetDownloadUrlForLayer",
                "ecr:BatchGetImage"
            ],
            "Resource": "arn:aws:ecr:us-east-1:111122223333:repository/image-repo"
        }
    ]
}
```

------

Tieni inoltre presente che `curl` o `wget` deve essere installato per poter utilizzare immagini personalizzate.

## In quali aree geografiche è AWS Lambda supportata l'elaborazione? CodeBuild
<a name="lambda.regions"></a>

Nel CodeBuild, l' AWS Lambda elaborazione è supportata nei seguenti paesi Regioni AWS: Stati Uniti orientali (Virginia settentrionale), Stati Uniti orientali (Ohio), Stati Uniti occidentali (Oregon), Asia Pacifico (Mumbai), Asia Pacifico (Singapore), Asia Pacifico (Sydney), Asia Pacifico (Tokyo), Europa (Francoforte), Europa (Irlanda) e Sud America (San Paolo). [Per ulteriori informazioni su Regioni AWS dove CodeBuild è disponibile, consulta Servizi per regione.AWS](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/)

## Limitazioni di AWS Lambda calcolo
<a name="lambda.limitations"></a>

Esistono alcuni casi d'uso che AWS Lambda non sono supportati e, se hanno un impatto su di te, usa il calcolo EC2:
+ AWS Lambda non supporta strumenti che richiedono i permessi di root. Per strumenti come `yum` or`rpm`, usa il tipo di calcolo EC2 o altri strumenti che non richiedono i permessi di root.
+ AWS Lambda non supporta le build o le esecuzioni di Docker.
+ AWS Lambda non supporta la scrittura su file esterni. `/tmp` I gestori di pacchetti inclusi sono configurati per utilizzare la `/tmp` directory di default per scaricare e fare riferimento ai pacchetti.
+ AWS Lambda non supporta il tipo di ambiente `LINUX_GPU_CONTAINER` e non è supportato su Windows Server Core 2019.
+ AWS Lambda non supporta la memorizzazione nella cache, i timeout di compilazione personalizzati, il timeout della coda, i badge di creazione, la modalità privilegiata, gli ambienti di runtime personalizzati o i runtime superiori a 15 minuti.
+ AWS Lambda non supporta la connettività VPC, un intervallo fisso di indirizzi IP di CodeBuild origine, EFS, l'installazione di certificati o l'accesso SSH con Session Manager.

# Implementa una funzione Lambda utilizzando AWS SAM con Lambda Java CodeBuild
<a name="sample-lambda-sam-gradle"></a>

Il AWS Serverless Application Model (AWS SAM) è un framework open source per la creazione di applicazioni serverless. Per ulteriori informazioni, consulta il [AWS Serverless Application Model repository](https://github.com/aws/serverless-application-model) su. GitHub Il seguente esempio di Java utilizza Gradle per creare e testare una AWS Lambda funzione. Dopodiché, la AWS SAM CLI viene utilizzata per distribuire il CloudFormation modello e il pacchetto di distribuzione. Utilizzando CodeBuild Lambda, le fasi di compilazione, test e implementazione vengono tutte gestite automaticamente, consentendo di aggiornare rapidamente l'infrastruttura senza l'intervento manuale in un'unica build.

## Configura il tuo repository AWS SAM
<a name="sample-lambda-sam-gradle.set-up-repo"></a>

Crea un AWS SAM `Hello World` progetto utilizzando la AWS SAM CLI.

**Per creare il tuo progetto AWS SAM**

1. Segui le istruzioni contenute nella *Guida per gli AWS Serverless Application Model sviluppatori* per [l'installazione della AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/install-sam-cli.html) sul tuo computer locale.

1. Esegui `sam init` e seleziona la seguente configurazione del progetto.

   ```
   Which template source would you like to use?: 1 - AWS Quick Start Templates
   Choose an AWS Quick Start application template: 1 - Hello World Example
   Use the most popular runtime and package type? (Python and zip) [y/N]: N
   Which runtime would you like to use?: 8 - java21
   What package type would you like to use?: 1 - Zip
   Which dependency manager would you like to use?: 1 - gradle
   Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: N
   Would you like to enable monitoring using CloudWatch Application Insights? [y/N]: N
   Would you like to set Structured Logging in JSON format on your Lambda functions? [y/N]:  N
   Project name [sam-app]: <insert project name>
   ```

1. Carica la cartella AWS SAM del progetto in un archivio di sorgenti supportato. Per un elenco dei tipi di sorgenti supportati, consulta [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Creare un progetto CodeBuild Lambda Java
<a name="sample-lambda-sam-gradle.create-project"></a>

Crea un progetto AWS CodeBuild Lambda Java e configura le autorizzazioni IAM necessarie per la build.

**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)**, seleziona Java.**
   + Per **Image**, selezionate **aws/codebuild/amazonlinux-x86\$164-lambda-standard:corretto21**.
   + **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": "",
               "Effect": "Allow",
               "Action": [
                   "cloudformation:*",
                   "lambda:*",
                   "iam:*",
                   "apigateway:*",
                   "s3:*"
               ],
               "Resource": "arn:aws:iam::*:role/Service*"
           }
       ]
   }
   ```

------

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

Per creare, testare e distribuire la tua funzione Lambda CodeBuild , legge ed esegue i comandi di compilazione da un buildspec.

**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:
       GRADLE_DIR: "HelloWorldFunction"
   phases:
     build:
       commands:
         - echo "Running unit tests..."
         - cd $GRADLE_DIR; gradle test; cd ..
         - echo "Running build..."
         - sam build --template-file template.yaml
         - echo "Running deploy..."
         - sam package --output-template-file packaged.yaml --resolve-s3 --template-file template.yaml
         - yes | sam deploy
   ```

1. Selezionare **Update buildspec (Aggiorna buildspec)**.

## Implementa la tua infrastruttura AWS SAM Lambda
<a name="sample-lambda-sam-gradle.deploy"></a>

Usa CodeBuild Lambda per implementare automaticamente la tua infrastruttura Lambda

**Per implementare la tua infrastruttura Lambda**

1. Selezionare **Start build (Avvia compilazione)**. Questo creerà, testerà e distribuirà automaticamente AWS SAM l'applicazione per utilizzarla. AWS Lambda CloudFormation

1. Una volta terminata la compilazione, accedi alla AWS Lambda console e cerca la tua nuova funzione Lambda sotto il nome del AWS SAM progetto.

1. Testa la tua funzione Lambda selezionando **API Gateway** nella panoramica delle **funzioni**, quindi facendo clic sull'URL dell'**endpoint API**. Dovresti vedere una pagina aperta con il messaggio. `"message": "hello world"`

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

Per evitare ulteriori addebiti per le risorse utilizzate durante questo tutorial, elimina le risorse create dal AWS SAM modello e CodeBuild.

**Per ripulire la tua infrastruttura**

1. Vai alla CloudFormation console e seleziona`aws-sam-cli-managed-default`.

1. In **Risorse**, svuota il bucket `SamCliSourceBucket` di distribuzione.

1. Elimina lo `aws-sam-cli-managed-default` stack.

1. Elimina lo CloudFormation stack associato al tuo AWS SAM progetto. Questo stack dovrebbe avere lo stesso nome del tuo AWS SAM progetto.

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 CodeBuild progetto scegliendo **Elimina progetto di compilazione**.

# Crea un'app React a pagina singola con CodeBuild Lambda Node.js
<a name="sample-lambda-react-nodejs"></a>

[Create React App](https://create-react-app.dev/) è un modo per creare applicazioni React a pagina singola. Il seguente esempio di Node.js utilizza Node.js per creare gli artefatti di origine dall'app Create React e restituisce gli artefatti di compilazione.

## Configura il repository dei sorgenti e il bucket degli artefatti
<a name="sample-lambda-react-nodejs.set-up-repo"></a>

Crea un archivio di sorgenti per il tuo progetto usando yarn e l'app Create React.

**Per configurare il repository dei sorgenti e il bucket degli artefatti**

1. Sul tuo computer locale, esegui `yarn create react-app <app-name>` per creare una semplice app React.

1. Carica la cartella del progetto dell'app React in un repository di sorgenti supportato. Per un elenco dei tipi di sorgenti supportati, vedi [ProjectSource](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_ProjectSource.html).

## Creare un progetto CodeBuild Lambda Node.js
<a name="sample-lambda-react-nodejs.create-project"></a>

Crea un progetto AWS CodeBuild Lambda Node.js.

**Per creare il tuo progetto CodeBuild Lambda Node.js**

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)**, seleziona Node.js.**
   + Per **Image**, selezionate **aws/codebuild/amazonlinux-x86\$164-lambda-standard:nodejs20**.

1. In **Artifacts (Artefatti)**:
   + Per **Tipo**, seleziona **Amazon S3**.
   + Per **Bucket name, seleziona il bucket** di artefatti del progetto che hai creato in precedenza.
   + **Per il packaging degli **artifatti**, seleziona Zip.**

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

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

Per creare la tua app React, CodeBuild legge ed esegue i comandi di compilazione da un file buildspec.

**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
   phases:
     build:
       commands:
         - yarn
         - yarn add --dev jest-junit @babel/plugin-proposal-private-property-in-object
         - yarn run build
         - yarn run test -- --coverage --watchAll=false --testResultsProcessor="jest-junit" --detectOpenHandles
   artifacts:
     name: "build-output"
     files:
       - "**/*"
   reports:
     test-report:
       files:
         - 'junit.xml'
       file-format: 'JUNITXML'
     coverage-report:
       files:
         - 'coverage/clover.xml'
       file-format: 'CLOVERXML'
   ```

1. Selezionare **Update buildspec (Aggiorna buildspec)**.

## Crea ed esegui la tua app React
<a name="sample-lambda-react-nodejs.build"></a>

Crea l'app React su CodeBuild Lambda, scarica gli artefatti di compilazione ed esegui l'app React localmente.

**Per creare ed eseguire la tua app React**

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

1. Una volta terminata la compilazione, accedi al tuo bucket di artefatti del progetto Amazon S3 e scarica l'artefatto dell'app React.

1. Decomprimi l'artefatto della build di React e inseriscilo nella cartella del progetto. `run npm install -g serve && serve -s build`

1. Il `serve` comando servirà il sito statico su una porta locale e stamperà l'output sul tuo terminale. Puoi visitare l'URL localhost sotto `Local:` nell'output del terminale per visualizzare la tua app React.

Per saperne di più su come gestire la distribuzione di un server basato su React, vedi [Create React App Deployment](https://create-react-app.dev/docs/deployment/).

## Pulisci la tua infrastruttura
<a name="sample-lambda-react-nodejs.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. Eliminare gli artefatti del progetto (bucket Amazon S3)

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

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

# 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.