

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 e richiama le funzioni durevoli Lambda con AWS CLI
<a name="durable-getting-started-cli"></a>

Usa il AWS CLI per creare e distribuire funzioni durevoli Lambda con comandi imperativi. Questo approccio ti offre il controllo diretto su ogni fase del processo di distribuzione.

## Prerequisiti
<a name="durable-cli-prerequisites"></a>
+ Istalla e configura la AWS CLI. Per istruzioni, vedere [Installazione di AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Crea un pacchetto di distribuzione con il codice della funzione e l'SDK di esecuzione durevole.
+ Crea un ruolo di esecuzione IAM con autorizzazioni di checkpoint.

## Creazione del ruolo di esecuzione
<a name="durable-cli-create-role"></a>

Crea un ruolo IAM con autorizzazioni per l'esecuzione Lambda di base e le operazioni di checkpoint.

**Per creare il ruolo di esecuzione**

1. Crea un documento sulla politica di fiducia che consenta a Lambda di assumere il ruolo. Salva questo come`trust-policy.json`:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "lambda.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

1. Crea il ruolo:

   ```
   aws iam create-role \
     --role-name durable-function-role \
     --assume-role-policy-document file://trust-policy.json
   ```

1. Allega la politica di esecuzione duratura per le operazioni di checkpoint e l'esecuzione di base:

   ```
   aws iam attach-role-policy \
     --role-name durable-function-role \
     --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy
   ```

La policy `AWSLambdaBasicDurableExecutionRolePolicy` gestita include le autorizzazioni necessarie per le operazioni di checkpoint (`lambda:CheckpointDurableExecution`e`lambda:GetDurableExecutionState`) e l'esecuzione di base di Lambda.

## Crea la funzione duratura
<a name="durable-cli-create-function"></a>

Crea la tua funzione duratura con il `--durable-config` parametro.

**Per creare una funzione duratura**

1. Package del codice della funzione con le dipendenze in un file.zip:

   ```
   zip -r function.zip index.mjs node_modules/
   ```
**Nota**  
Per le funzioni durevoli basate su Java, è necessario compilare il codice della funzione e le dipendenze in un unico file.zip o file Java Archive (JAR). Per ulteriori informazioni, consulta [Distribuire le funzioni Java Lambda con archivi di file.zip o](java-package.md) JAR.

1. Crea la funzione con l'esecuzione duratura abilitata:

   ```
   aws lambda create-function \
     --function-name myDurableFunction \
     --runtime nodejs22.x \
     --role arn:aws:iam::123456789012:role/durable-function-role \
     --handler index.handler \
     --zip-file fileb://function.zip \
     --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'
   ```

**Nota**  
È possibile abilitare l'esecuzione duratura solo durante la creazione della funzione. Non è possibile abilitarla su funzioni esistenti.

## Pubblica una versione
<a name="durable-cli-publish-version"></a>

Sebbene le funzioni durevoli possano essere richiamate utilizzando il qualificatore di `$LATEST` versione, è necessario utilizzare sempre un ARN qualificato che punti a una versione stabile per garantire l'esecuzione deterministica del codice.

```
aws lambda publish-version \
  --function-name myDurableFunction \
  --description "Initial version"
```

Il comando restituisce la versione ARN. Annotate il numero di versione (ad esempio,`:1`) alla fine dell'ARN.

Facoltativamente, create un alias che punti alla versione:

```
aws lambda create-alias \
  --function-name myDurableFunction \
  --name prod \
  --function-version 1
```

## Invoca la funzione duratura
<a name="durable-cli-invoke"></a>

Richiama la tua funzione duratura utilizzando l'ARN qualificato (versione o alias).

**Nota**  
**Invocazioni idempotenti:** per evitare esecuzioni duplicate quando si riprova una chiamata fallita, è possibile fornire un nome di esecuzione che garantisca la semantica dell'esecuzione. at-most-once [Vedi Idempotenza per i dettagli.](durable-execution-idempotency.md)

**Invocazione sincrona**  
Per le esecuzioni che vengono completate entro 15 minuti, usa la chiamata sincrona:

```
aws lambda invoke \
  --function-name myDurableFunction:1 \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

O usando un alias:

```
aws lambda invoke \
  --function-name myDurableFunction:prod \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

**Invocazione asincrona**  
Per le esecuzioni di lunga durata, usa la chiamata asincrona:

```
aws lambda invoke \
  --function-name myDurableFunction:prod \
  --invocation-type Event \
  --payload '{"orderId": "order-12345"}' \
  --cli-binary-format raw-in-base64-out \
  response.json
```

Con la chiamata asincrona, Lambda ritorna immediatamente. L'esecuzione della funzione continua in background.

**Nota**  
È possibile utilizzarla `$LATEST` per la prototipazione e il test nella console. Per i carichi di lavoro di produzione, utilizza una versione o un alias pubblicati.

## Gestisci esecuzioni durevoli
<a name="durable-cli-manage-executions"></a>

Utilizzate i seguenti comandi per gestire e monitorare le esecuzioni di funzioni durevoli.

**Elenca le esecuzioni**  
Elenca tutte le esecuzioni per una funzione durevole:

```
aws lambda list-durable-executions-by-function \
  --function-name myDurableFunction
```

**Ottieni i dettagli dell'esecuzione**  
Ottieni dettagli su un'esecuzione specifica:

```
aws lambda get-durable-execution \
  --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
```

**Ottieni la cronologia delle esecuzioni**  
Visualizza la cronologia dei checkpoint per un'esecuzione:

```
aws lambda get-durable-execution-history \
  --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
```

**Interrompi un'esecuzione**  
Interrompi un'esecuzione durevole in esecuzione:

```
aws lambda stop-durable-execution \
  --durable-execution-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
```

## Aggiornamento del codice della funzione
<a name="durable-cli-update-function"></a>

Aggiorna il codice della funzione durevole e pubblica una nuova versione:

**Per aggiornare e pubblicare una nuova versione**

1. Aggiorna il codice della funzione:

   ```
   aws lambda update-function-code \
     --function-name myDurableFunction \
     --zip-file fileb://function.zip
   ```

1. Attendi il completamento dell'aggiornamento:

   ```
   aws lambda wait function-updated \
     --function-name myDurableFunction
   ```

1. Pubblica una nuova versione:

   ```
   aws lambda publish-version \
     --function-name myDurableFunction \
     --description "Updated order processing logic"
   ```

1. Aggiorna l'alias in modo che punti alla nuova versione:

   ```
   aws lambda update-alias \
     --function-name myDurableFunction \
     --name prod \
     --function-version 2
   ```

**Importante**  
Le esecuzioni in esecuzione continuano a utilizzare la versione con cui sono iniziate. Le nuove chiamate utilizzano la versione aggiornata dell'alias.

## Visualizzare i log delle funzioni
<a name="durable-cli-view-logs"></a>

Visualizza i log della tua funzione durevole in Logs: CloudWatch 

```
aws logs tail /aws/lambda/myDurableFunction --follow
```

Filtra i log per un'esecuzione specifica:

```
aws logs filter-log-events \
  --log-group-name /aws/lambda/myDurableFunction \
  --filter-pattern "exec-abc123"
```

## Eseguire la pulizia delle risorse
<a name="durable-cli-cleanup"></a>

Elimina la tua funzione durevole e le risorse associate:

```
# Delete the function
aws lambda delete-function --function-name myDurableFunction

# Delete the IAM role policies
aws iam detach-role-policy \
  --role-name durable-function-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole

aws iam detach-role-policy \
  --role-name durable-function-role \
  --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

# Delete the role
aws iam delete-role --role-name durable-function-role
```

## Fasi successive
<a name="durable-cli-next-steps"></a>

Dopo aver implementato la funzione duratura con: AWS CLI
+ Monitora le esecuzioni utilizzando i `list-durable-executions-by-function` comandi and `get-durable-execution`
+ Visualizza le operazioni dei checkpoint negli eventi relativi ai dati AWS CloudTrail 
+ Imposta CloudWatch allarmi per errori di esecuzione o esecuzioni di lunga durata
+ Automatizza le distribuzioni utilizzando script o pipeline di shell CI/CD 

Per ulteriori informazioni sui AWS CLI comandi per Lambda, consulta il [AWS CLI Command](https://docs.aws.amazon.com/cli/latest/reference/lambda/index.html) Reference.