

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

# Usa le azioni AWS FIS aws:lambda:function
<a name="use-lambda-actions"></a>

Puoi usare le azioni **aws:lambda:function** per inserire errori nelle chiamate delle tue funzioni. AWS Lambda 

Queste azioni utilizzano un'estensione gestita per iniettare errori. AWS FIS Per utilizzare le azioni **aws:lambda:function**, dovrai collegare l'estensione come livello alle tue funzioni Lambda e configurare un bucket Amazon S3 per comunicare tra e l'estensione. AWS FIS 

Quando esegui un AWS FIS esperimento che ha come target **aws:lambda:function, legge** la configurazione di AWS FIS Amazon S3 dalla tua funzione Lambda e scrive le informazioni di fault injection nella posizione Amazon S3 specificata, come mostrato nel diagramma seguente.

![\[Diagramma che mostra la configurazione dell'estensione AWS Fault Injection Service Lambda.\]](http://docs.aws.amazon.com/it_it/fis/latest/userguide/images/Serverless-config-distro-3.png)


## Azioni
<a name="supported-lambda-actions"></a>
+ [aws:lambda:invocation-add-delay](fis-actions-reference.md#invocation-add-delay)
+ [aws:lambda:invocation-error](fis-actions-reference.md#invocation-error)
+ [aws:lambda:invocation-http-integration-response](fis-actions-reference.md#invocation-http-integration-response)

## Limitazioni
<a name="lambda-limitations"></a>
+ L'estensione AWS FIS Lambda non può essere utilizzata con funzioni che utilizzano lo streaming di risposte. Anche quando non vengono applicati errori, l'estensione AWS FIS Lambda sopprimerà le configurazioni di streaming. Per ulteriori informazioni, consulta [lo streaming di risposte per le funzioni Lambda nella guida](https://docs.aws.amazon.com/lambda/latest/dg/configuration-response-streaming.html) per l'*AWS Lambda utente*.

## Prerequisiti
<a name="lambda-prerequisites"></a>

Prima di utilizzare le azioni AWS FIS Lambda, assicurati di aver completato queste attività una tantum:
+ **Crea un bucket Amazon S3 nella regione da cui intendi iniziare un esperimento** ‐ Puoi usare un singolo bucket Amazon S3 per più esperimenti e condividere il bucket tra più account. AWS Tuttavia, è necessario disporre di un bucket separato per ciascuno. Regione AWS
+ **Crea una policy IAM per concedere l'accesso in lettura per l'estensione Lambda al bucket Amazon S3** ‐ Nel modello seguente, `my-config-distribution-bucket` sostituiscilo con il nome del bucket Amazon S3 che hai creato sopra `FisConfigs` e con il nome di una cartella nel bucket Amazon S3 che desideri utilizzare.

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingConfigLocation",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::my-config-distribution-bucket"],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["FisConfigs/*"]
                }
            }
        },
        {
            "Sid": "AllowReadingObjectFromConfigLocation",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": ["arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*"]
        }
    ]
  }
  ```

------
+ **Crea una policy IAM per concedere l'accesso in scrittura per l' AWS FIS esperimento al bucket Amazon S3** ‐ Nel modello seguente, sostituiscilo `my-config-distribution-bucket` con il nome del bucket Amazon S3 che hai creato sopra e `FisConfigs` con il nome di una cartella nel bucket Amazon S3 che desideri utilizzare.

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowFisToWriteAndDeleteFaultConfigurations",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*"
        },
        {
            "Sid": "AllowFisToInspectLambdaFunctions",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowFisToDoTagLookups",
            "Effect": "Allow",
            "Action": [
                "tag:GetResources"
            ],
            "Resource": "*"
        }
    ]
  }
  ```

------

## Configurazione di funzioni Lambda
<a name="configure-lambda-functions"></a>

Segui i passaggi seguenti per ogni funzione Lambda su cui desideri influire:

1. Allega la policy di accesso alla lettura di Amazon S3 creata sopra alla funzione Lambda.

1. Associa l' AWS FIS estensione come livello alla funzione. Per ulteriori informazioni sul layer ARNs, vedere[Versioni disponibili dell' AWS FIS estensione per Lambda](actions-lambda-extension-arns.md). 

1. Imposta la `AWS_FIS_CONFIGURATION_LOCATION` variabile sull'ARN della cartella di configurazione di Amazon S3, ad esempio. `arn:aws:s3:::my-config-distribution-bucket/FisConfigs/`

1. Impostare la variabile `AWS_LAMBDA_EXEC_WRAPPER` su `/opt/aws-fis/bootstrap`.

## Configura un esperimento AWS FIS
<a name="configure-fis-experiment-lambda-actions"></a>

Prima di eseguire l'esperimento, assicurati di aver collegato la policy di accesso alla scrittura di Amazon S3 che hai creato nei prerequisiti ai ruoli dell'esperimento che utilizzeranno le azioni AWS FIS Lambda. Per ulteriori informazioni su come configurare un AWS FIS esperimento, consulta. [Gestione dei AWS modelli di esperimento FISGestione degli esperimenti AWS FIS](experiments.md)

## Registrazione dei log
<a name="lambda-actions-logging"></a>

L'estensione AWS FIS Lambda scrive i log nella console e i log. CloudWatch La registrazione può essere configurata utilizzando la variabile. `AWS_FIS_LOG_LEVEL` I valori supportati sono `INFO`, `WARN` e `ERROR`. I log verranno scritti nel formato di registro configurato per la funzione Lambda.

Di seguito è riportato un esempio di registro in formato testo:

```
2024-08-09T18:51:38.599984Z INFO AWS FIS EXTENSION - extension enabled 1.0.1
```

Di seguito è riportato un esempio di registro in formato JSON:

```
{
  "timestamp": "2024-10-08T17:15:36.953905Z",
  "level": "INFO",
  "fields": {
    "message": "AWS FIS EXTENSION - adding 5000 milliseconds of latency to function invocation",
    "requestId":"0608bf70-908f-4a17-bbfe-3782cd783d8b"
  }
}
```

I log emessi possono essere utilizzati con i filtri CloudWatch metrici di Amazon per generare parametri personalizzati. Per ulteriori informazioni sui filtri metrici, consulta [Creazione di metriche da eventi di log utilizzando filtri](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) nella guida per l'utente di *Amazon CloudWatch Logs.*

### Utilizzo del formato CloudWatch Embedded Metric Format (EMF)
<a name="lambda-actions-emf-metrics"></a>

È possibile configurare l'estensione AWS FIS Lambda per l'emissione di log EMF impostando la variabile su. `AWS_FIS_EXTENSION_METRICS` `all` Per impostazione predefinita, l'estensione non emette registri EMF e l'impostazione predefinita è. `AWS_FIS_EXTENSION_METRICS` `none` I registri EMF vengono pubblicati nella console. `aws-fis-extension namespace` CloudWatch 

All'interno del `aws-fis-extension` namespace, è possibile selezionare determinate metriche da visualizzare in un grafico. L'esempio seguente mostra alcune delle metriche disponibili nel namespace. `aws-fis-extension`

![\[Grafico di esempio delle metriche EMF di output nella dashboard. CloudWatch\]](http://docs.aws.amazon.com/it_it/fis/latest/userguide/images/emf-metrics-graph.png)


## Argomenti avanzati
<a name="lambda-actions-advanced-topics"></a>

Questa sezione fornisce informazioni aggiuntive su come AWS FIS funziona l'estensione Lambda e su casi d'uso speciali.

**Topics**
+ [Comprendere i sondaggi](#understanding-polling)
+ [Comprendere la concorrenza](#understanding-concurrency)
+ [Comprensione della percentuale di invocazione](#understanding-invocation-percentage)
+ [Considerazioni speciali per SnapStart](#considerations-for-snapshot)
+ [Considerazioni speciali per le funzioni veloci e poco frequenti](#considerations-for-fast-infrequent-functions)
+ [Configurazione di più estensioni utilizzando il proxy API Lambda Runtime](#configuring-multiple-extensions)
+ [Utilizzo AWS FIS con i runtime dei container](#container-runtimes)
+ [AWS FIS Variabili di ambiente Lambda](#fis-extension-environment-variables)

### Comprendere i sondaggi
<a name="understanding-polling"></a>

È possibile che si verifichi un periodo di accelerazione fino a 60 minuti prima che i guasti inizino a influire su tutte le chiamate. Questo perché l'estensione Lambda richiede raramente informazioni di configurazione in attesa dell'inizio di un esperimento. È possibile regolare l'intervallo di polling impostando la variabile di `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` ambiente (impostazione predefinita 60s). Un valore più basso verrà sottoposto a sondaggi più frequenti, ma comporterà un maggiore impatto sulle prestazioni e sui costi. È inoltre possibile che si verifichi un periodo di rallentamento fino a 20 secondi dopo l'iniezione del guasto. Questo perché l'estensione esegue i sondaggi più frequentemente durante l'esecuzione degli esperimenti.

### Comprendere la concorrenza
<a name="understanding-concurrency"></a>

Puoi indirizzare le stesse funzioni Lambda con più azioni contemporaneamente. Se le azioni sono tutte diverse l'una dall'altra, verranno applicate tutte le azioni. Ad esempio, è possibile aggiungere un ritardo iniziale prima di restituire un errore. Se due azioni identiche o in conflitto vengono applicate alla stessa funzione, verrà applicata solo l'azione con la data di inizio più vicina. 

 **La figura seguente mostra due azioni in conflitto, **aws:lambda:invocation-error e aws:lambda:, che si sovrappongono**. invocation-http-integration-response** **Inizialmente**, aws:lambda:invocation-error aumenta alle 11:38 e dura 2 minuti. Quindi, **aws:lambda: invocation-http-integration-response** tenta di iniziare alle 11:39, ma non entra in vigore fino alle 11:40 dopo la conclusione della prima azione. Per mantenere la tempistica dell'esperimento, **aws:lambda**: termina comunque all'ora originariamente prevista di 11:41. invocation-http-integration-response 

![\[Graphs showing error and response code percentages for x86 and arm during overlapping actions.\]](http://docs.aws.amazon.com/it_it/fis/latest/userguide/images/understanding-concurrency.png)


### Comprensione della percentuale di invocazione
<a name="understanding-invocation-percentage"></a>

Le azioni AWS Fault Injection Service Lambda utilizzano un target **aws:lambda:function** che consente di selezionare una o più funzioni. AWS Lambda ARNs Usando queste ARNs, le azioni AWS Fault Injection Service Lambda possono iniettare errori in ogni chiamata della funzione Lambda selezionata. Per consentire di inserire errori solo in una frazione delle invocazioni, ogni azione consente di specificare un parametro con valori compresi tra 0 e 100. `invocationPercentage` Utilizzando il `invocationPercentage` parametro, è possibile garantire che le azioni siano simultanee anche per percentuali di invocazione inferiori al 100%. 

### Considerazioni speciali per SnapStart
<a name="considerations-for-snapshot"></a>

AWS Lambda le funzioni SnapStart abilitate avranno una maggiore probabilità di attendere l'intera durata `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` prima di rilevare la configurazione del primo errore, anche se un esperimento è già in corso. Questo perché Lambda SnapStart utilizza una singola istantanea come stato iniziale per più ambienti di esecuzione e lo storage temporaneo persiste. Per l'estensione AWS Fault Injection Service Lambda, manterrà la frequenza di polling e salterà il controllo di configurazione iniziale all'inizializzazione dell'ambiente di esecuzione. *Per ulteriori informazioni su Lambda SnapStart, consulta [Migliorare le prestazioni di avvio con Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) nella guida per l'utente.AWS Lambda * 

### Considerazioni speciali per le funzioni veloci e poco frequenti
<a name="considerations-for-fast-infrequent-functions"></a>

Se la funzione Lambda viene eseguita per meno della durata media del sondaggio di 70 millisecondi, il thread di polling potrebbe aver bisogno di più invocazioni per ottenere configurazioni di errore. Se la funzione viene eseguita raramente, ad esempio una volta ogni 15 minuti, il sondaggio non verrà mai completato. Per assicurarti che il thread di polling possa terminare, imposta il parametro. `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS` L'estensione aspetterà il completamento di un sondaggio in volo fino alla durata impostata prima di avviare la funzione. Tieni presente che ciò aumenterà la durata della funzione fatturata e comporterà un ulteriore ritardo su alcune chiamate.

### Configurazione di più estensioni utilizzando il proxy API Lambda Runtime
<a name="configuring-multiple-extensions"></a>

L'estensione Lambda utilizza il proxy dell'API AWS Lambda Runtime per intercettare le chiamate di funzione prima che raggiungano il runtime. Lo fa esponendo un proxy per l'API AWS Lambda Runtime al runtime e pubblicizzando la sua posizione nella variabile. `AWS_LAMBDA_RUNTIME_API` 

Il diagramma seguente mostra la configurazione per una singola estensione utilizzando il proxy API Lambda Runtime:

![\[La configurazione predefinita.\]](http://docs.aws.amazon.com/it_it/fis/latest/userguide/images/Proxy-1.png)


Per utilizzare l'estensione AWS FIS Lambda con un'altra estensione utilizzando il pattern proxy dell'API AWS Lambda Runtime, è necessario concatenare i proxy utilizzando uno script di bootstrap personalizzato. L'estensione AWS FIS Lambda accetta le seguenti variabili di ambiente:
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Prende una stringa nel formato `127.0.0.1:9876` che rappresenta l'IP locale e la porta del listener per l'API AWS Lambda Runtime. Potrebbe essere il valore originale `AWS_LAMBDA_RUNTIME_API` o la posizione di un altro proxy.
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ Per impostazione predefinita, richiede un numero di porta su cui l' AWS FIS estensione deve avviare il proprio proxy`9100`.

Con queste impostazioni puoi concatenare l' AWS FIS estensione con un'altra estensione utilizzando il proxy API Lambda Runtime in due ordini diversi.

![\[Due estensioni concatenate che utilizzano il proxy API Lambda.\]](http://docs.aws.amazon.com/it_it/fis/latest/userguide/images/lambda-runtime-api-proxy.png)


*Per ulteriori informazioni sul proxy dell'API AWS Lambda Runtime, consulta [Migliorare la sicurezza e la governance del AWS Lambda runtime con l'estensione proxy Runtime API](https://aws.amazon.com/blogs/compute/enhancing-runtime-security-and-governance-with-the-aws-lambda-runtime-api-proxy-extension/) e [Uso dell'API di runtime Lambda per i runtime personalizzati](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) nella guida per l'AWS Lambda utente.*

### Utilizzo AWS FIS con i runtime dei container
<a name="container-runtimes"></a>

Per AWS Lambda le funzioni che utilizzano immagini del contenitore che accettano la variabile di `AWS_LAMBDA_RUNTIME_API` ambiente, puoi inserire l'estensione AWS FIS Lambda nell'immagine del contenitore seguendo i passaggi seguenti:

1. Determina l'ARN del livello da cui estrarre l'estensione. Per ulteriori informazioni su come trovare l'ARN, vedere. [Configurazione di funzioni Lambda](#configure-lambda-functions)

1. Utilizza AWS Command Line Interface (CLI) per richiedere dettagli sull'estensione. `aws lambda get-layer-version-by-arn --arn fis-extension-arn` La risposta conterrà un `Location` campo contenente un URL prefirmato da cui è possibile scaricare l'estensione FIS come file ZIP.

1. Decomprimi il contenuto dell'estensione nel tuo filesystem `/opt` Docker. Di seguito è riportato un esempio di Dockerfile basato sul runtime NodeJS Lambda:

   ```
   # extension installation #
   FROM amazon/aws-lambda-nodejs:12 AS builder
   COPY extension.zip extension.zip
   RUN yum install -y unzip
   RUN mkdir -p /opt
   RUN unzip extension.zip -d /opt
   RUN rm -f extension.zip
   FROM amazon/aws-lambda-nodejs:12
   WORKDIR /opt
   COPY --from=builder /opt .
   # extension installation finished #
   # JS example. Modify as required by your runtime
   WORKDIR ${LAMBDA_TASK_ROOT}
   COPY index.js package.json .
   RUN npm install
   CMD [ "index.handler" ]
   ```

Per ulteriori informazioni sulle immagini dei contenitori, consulta [Creare una funzione Lambda utilizzando un'immagine del contenitore nella guida](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html) per l'*AWS Lambda utente*.

### AWS FIS Variabili di ambiente Lambda
<a name="fis-extension-environment-variables"></a>

Di seguito è riportato un elenco di variabili di ambiente per l'estensione AWS FIS Lambda
+ `AWS_FIS_CONFIGURATION_LOCATION`‐ Obbligatorio. Posizione in cui AWS FIS verranno scritte le configurazioni di errore attive e l'estensione leggerà le configurazioni di errore. Le posizioni devono essere in formato Amazon S3 ARN, inclusi un bucket e un percorso. Ad esempio, `arn:aws:s3:::my-fis-config-bucket/FisConfigs/`.
+ `AWS_LAMBDA_EXEC_WRAPPER`‐ Richiesto. Posizione dello [script AWS Lambda wrapper utilizzato per](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-modify.html#runtime-wrapper) configurare l'estensione Lambda AWS FIS . Dovrebbe essere impostato sullo `/opt/aws-fis/bootstrap` script incluso nell'estensione.
+ `AWS_FIS_LOG_LEVEL`‐ Facoltativo. Livello di registro per i messaggi emessi dall'estensione AWS FIS Lambda. I valori supportati sono `INFO`, `WARN` e `ERROR`. Se non è impostata, AWS FIS l'estensione verrà impostata per impostazione predefinita su. `INFO`
+ `AWS_FIS_EXTENSION_METRICS`‐ Facoltativo. I valori possibili sono `all` e `none`. Se impostato `all` sull'estensione, emetterà le metriche EMF sotto il. `aws-fis-extension namespace`
+ `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS`‐ Facoltativo. Se impostato, annullerà l'intervallo di polling (in secondi) mentre l'estensione non inietta errori e attende che venga aggiunta una configurazione di errore alla posizione di configurazione. L’impostazione predefinita è `60`.
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Opzionale. If set sovrascriverà il valore di `AWS_LAMBDA_RUNTIME_API` per definire dove l' AWS FIS estensione interagisce con l'API di AWS Lambda runtime per controllare l'invocazione della funzione. Si aspetta IP:PORT, ad esempio. `127.0.0.1:9000` *Per ulteriori informazioni`AWS_LAMBDA_RUNTIME_API`, consulta [Using the Lambda runtime API for custom runtime](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) nella guida per l'AWS Lambda utente.*
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ Facoltativo. Definisce la porta su cui l'estensione AWS FIS Lambda espone un proxy API AWS Lambda di runtime che può essere utilizzato da un'altra estensione o dal runtime. L’impostazione predefinita è `9100`.
+ `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS`‐ Facoltativo. Se impostata su un valore diverso da zero, questa variabile definisce il numero di millisecondi in cui l'estensione attenderà il completamento di un sondaggio asincrono in volo prima di valutare le configurazioni di errore e avviare l'invocazione del runtime. L’impostazione predefinita è `0`.