

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

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