

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

# Crittografia AWS Lambda dati di esecuzione durevoli
<a name="durable-encryption"></a>

Grazie a [funzioni AWS Lambda durevoli](durable-functions.md), è possibile creare applicazioni resilienti e in più fasi che durano fino a un anno, utilizzando i checkpoint per ripristinare ogni esecuzione in caso di errori ripetendo il lavoro completato.

Lambda crittografa sempre i dati di esecuzione durevoli quando sono inattivi. È inoltre possibile configurare la propria chiave gestita AWS KMS dal cliente sulla funzione per il controllo della rotazione, la visibilità degli audit o la conformità. Con una chiave gestita dal cliente, solo i responsabili autorizzati possono leggere i dati di esecuzione.

## Come funziona la crittografia
<a name="durable-encryption-how-it-works"></a>

Un'esecuzione durevole Lambda utilizza la stessa chiave KMS con cui è iniziata per tutta la sua durata. La modifica o la rimozione del tasto sulla funzione influisce solo sulle esecuzioni che iniziano dopo la modifica. Scopri [Quando la chiave gestita dal cliente non è disponibile](#durable-encryption-key-unavailable) come si comporta un'esecuzione durevole quando la relativa chiave non è disponibile.

Le chiavi gestite dal cliente sono soggette a costi standard. AWS KMS Per i dettagli sui prezzi, vedere [Prezzi di AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

## Cosa è crittografato
<a name="durable-encryption-what-is-encrypted"></a>

Quando configuri una chiave gestita dal cliente su una funzione durevole, Lambda utilizza quella chiave per crittografare i seguenti dati di esecuzione durevoli a riposo:
+ Il payload di input che trasmetti con ogni richiesta. `Invoke`
+ Dati di checkpoint mantenuti dall'`CheckpointDurableExecution`API, inclusi i risultati delle fasi, gli errori delle fasi e gli input di invoke concatenati.
+ Risultati ed errori di esecuzione.
+ Risultati di callback ed errori inviati tramite `SendDurableExecutionCallbackSuccess` e`SendDurableExecutionCallbackFailure`.

**Function-level e le chiavi di esecuzione durevoli sono indipendenti**  
Il livello di funzione `KMSKeyArn` che crittografa [le variabili di ambiente](configuration-envvars-encryption.md), i [pacchetti di distribuzione.zip](encrypt-zip-package.md) e le [SnapStart](snapstart-security.md)istantanee è separato da `DurableConfig` quello `KMSKeyArn` in cui crittografa i dati di esecuzione durevoli. L'impostazione di uno non imposta l'altro. Puoi usare la stessa chiave KMS per entrambi oppure puoi usare chiavi KMS diverse.

## Configura la crittografia a chiave gestita dal cliente
<a name="durable-encryption-setup"></a>

L'impostazione della crittografia a chiave gestita dal cliente per una funzione durevole è un processo in tre fasi. Completa i seguenti passaggi nell'ordine indicato.

### Creazione di una chiave gestita dal cliente
<a name="durable-encryption-create-key"></a>

Le funzioni durevoli supportano le chiavi KMS di crittografia simmetrica nella stessa AWS regione della funzione. Cross-Region le chiavi non sono supportate. *Per creare una chiave simmetrica gestita dal cliente, segui i passaggi per la [creazione di chiavi KMS con crittografia simmetrica](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) nella Guida per gli sviluppatori.AWS Key Management Service *

### Permissions
<a name="durable-encryption-permissions"></a>

Concedi AWS KMS le autorizzazioni tramite la politica chiave della chiave KMS.

La configurazione di una chiave gestita dal cliente richiede AWS KMS le autorizzazioni sul principale che crea o aggiorna la funzione. L'invocazione di una funzione durevole non richiede AWS KMS autorizzazioni per il chiamante; Lambda esegue la crittografia con il suo service principal.

#### Policy della chiave
<a name="durable-encryption-key-policy"></a>

Le [policy della chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) controllano l'accesso alla chiave gestita dal cliente. Ogni chiave gestita dal cliente deve avere esattamente una politica chiave. In una politica chiave, `Resource: "*"` si riferisce solo alla chiave KMS a cui è allegata la politica, non a tutte le chiavi KMS del tuo account.

La politica chiave di una funzione durevole garantisce a ciascun principale solo le AWS KMS azioni di cui ha bisogno, nell'ambito dell'ARN del servizio e della funzione. Le sezioni seguenti descrivono le dichiarazioni, le condizioni e un esempio completo.

**Dichiarazioni politiche obbligatorie**  
La politica garantisce le seguenti funzionalità:
+ **Abilita le autorizzazioni utente IAM**. Concede all'account root l'accesso incondizionato per gestire la chiave. Questa istruzione non utilizza alcuna condizione in quanto l'ambito impedirebbe di ruotare, aggiornare o eliminare la chiave.
+ **Consenti a Lambda di utilizzare questo tasto per funzioni durevoli.** Concede il servizio `kms:GenerateDataKey` Lambda principale e. `kms:Decrypt`
+ **Consenti al ruolo di esecuzione della funzione di decrittografare i** dati di esecuzione durevoli. Assegna al ruolo `kms:Decrypt` di esecuzione la lettura dello stato e l'avanzamento dell'esecuzione.
+ **Consenti all'autore della funzione di descrivere questa chiave**. Garantisce che Lambda `kms:DescribeKey` possa convalidare che la chiave sia simmetrica e abilitata durante o. `CreateFunction` `UpdateFunctionConfiguration`
+ **Consenti all'autore della funzione di convalidare questa** chiave per una funzione specifica. Grants `kms:GenerateDataKey` e `kms:Decrypt` quindi Lambda può convalidare le autorizzazioni e l'accesso delle chiavi con il contesto di crittografia della funzione durante o. `CreateFunction` `UpdateFunctionConfiguration` Ciò conferma che la policy chiave accetta le chiamate per questa funzione specifica prima che la funzione venga creata o aggiornata.
+ **Consenti operatori di esecuzione durevoli**. Concede agli operatori `kms:Decrypt` le chiamate verso`GetDurableExecution`, `GetDurableExecutionHistory` with`IncludeExecutionData=true`, `GetDurableExecutionState``StopDurableExecution`, e le API di callback.

È consigliabile utilizzare principi distinti per il ruolo di esecuzione, l'autore della funzione e l'operatore di esecuzione durevole, in modo che ogni identità abbia solo le funzionalità necessarie.

**Condizioni politiche consigliate**  
La politica utilizza le seguenti condizioni per limitare l'accesso:
+ [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)limita l'uso delle chiavi alle richieste inoltrate tramite Lambda. L'applicazione di questa impostazione al ruolo di esecuzione, all'autore della funzione e alle istruzioni dell'operatore impedisce loro di utilizzare la chiave direttamente. AWS KMS
+ [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)e [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)proteggiti dal [problema del vicedirettore confuso tra diversi servizi](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Lambda inoltra questi valori quando chiama AWS KMS utilizzando le proprie credenziali di servizio. Questa condizione si applica solo alla dichiarazione principale del servizio Lambda. Le istruzioni del ruolo di esecuzione, dell'autore della funzione e dell'operatore richiamano AWS KMS le credenziali della sessione di accesso diretto del chiamante, che non contengono queste intestazioni.
+ [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context)definisce la chiave per una funzione specifica. Lambda lo aggiunge al contesto di crittografia in ogni AWS KMS chiamata per dati di esecuzione durevoli.

L'esempio seguente combina le istruzioni e le condizioni precedenti.

**Example Politica chiave per funzioni durevoli**  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow Lambda to use this key for durable functions",
            "Effect": "Allow",
            "Principal": { "Service": "lambda.amazonaws.com" },
            "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        },
        {
            "Sid": "Allow the function execution role to decrypt durable execution data",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/myDurableFunctionRole" },
            "Action": "kms:Decrypt",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        },
        {
            "Sid": "Allow the function author to describe this key",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com"
                }
            }
        },
        {
            "Sid": "Allow the function author to validate this key for a specific function",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" },
            "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        },
        {
            "Sid": "Allow durable execution operators",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/DurableExecutionOperator" },
            "Action": "kms:Decrypt",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        }
    ]
}
```

Per ulteriori informazioni sulle politiche AWS KMS chiave, consulta [Come modificare una politica chiave](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to) nella *Guida per gli AWS Key Management Service sviluppatori*.

### Configura una chiave gestita dal cliente su una funzione durevole
<a name="durable-encryption-configure"></a>

Si configura la chiave gestita dal cliente per dati di esecuzione durevoli attraverso il `KMSKeyArn` campo dell'`DurableConfig`oggetto. Impostala quando crei la funzione con [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html); aggiornala su una funzione durevole esistente con [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html).

------
#### [ Lambda console ]

**Per configurare una chiave gestita dal cliente su una funzione durevole esistente**

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegli una funzione durevole.

1. Scegli **Configurazione**, quindi scegli **Esecuzione durevole** dalla barra di navigazione a sinistra.

1. Scegli **Modifica**.

1. In **Crittografia**, scegli **Usa una chiave gestita dal cliente**, quindi scegli una chiave KMS dall'elenco.

1. Scegli **Save** (Salva).

------
#### [ AWS CLI ]

**Per configurare una chiave gestita dal cliente quando crei una funzione**

Nel seguente esempio di [creazione di una funzione](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html), l'`--durable-config`opzione specifica l'ARN della chiave gestita dal cliente insieme al timeout di esecuzione e al periodo di conservazione duraturi.

```
aws lambda create-function \
  --function-name myDurableFunction \
  --runtime nodejs24.x \
  --handler index.handler \
  --role arn:aws:iam::111122223333:role/myDurableFunctionRole \
  --zip-file fileb://{{function.zip}} \
  --durable-config '{"KMSKeyArn":"{{arn:aws:kms:us-east-1:111122223333:key/key-id}}","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
```

**Per configurare una chiave gestita dal cliente su una funzione durevole esistente**

Utilizzate il comando [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html). Includi tutti `DurableConfig` i campi che vuoi conservare, perché `--durable-config` sostituisce l'intero oggetto.

```
aws lambda update-function-configuration \
  --function-name myDurableFunction \
  --durable-config '{"KMSKeyArn":"{{arn:aws:kms:us-east-1:111122223333:key/key-id}}","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
```

**Per rimuovere la chiave gestita dal cliente da una funzione durevole**

Ometti `KMSKeyArn` da`--durable-config`. Le esecuzioni esistenti continuano a utilizzare la chiave gestita dal cliente con cui hanno iniziato. Le nuove esecuzioni utilizzano invece la crittografia predefinita.

```
aws lambda update-function-configuration \
  --function-name myDurableFunction \
  --durable-config '{"ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
```

------
#### [ AWS CloudFormation ]

In una `AWS::Lambda::Function` risorsa, imposta la `KMSKeyArn` proprietà di`DurableConfig`:

```
Resources:
  MyDurableFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: myDurableFunction
      Runtime: nodejs24.x
      Handler: index.handler
      Role: !GetAtt MyDurableFunctionRole.Arn
      Code:
        ZipFile: |
          // Your durable function code
      DurableConfig:
        KMSKeyArn: "arn:aws:kms:us-east-1:111122223333:key/key-id"
        ExecutionTimeout: 3600
        RetentionPeriodInDays: 30
```

------

**Importante**  
Ogni esecuzione durevole utilizza la chiave gestita dal cliente configurata sulla funzione al momento dell'avvio. La modifica o la rimozione della chiave ha effetto solo sulle esecuzioni che iniziano dopo la modifica; le esecuzioni in corso continuano a utilizzare la chiave con cui sono iniziate fino al completamento o all'esito negativo.

## Lettura di dati di esecuzione durevoli
<a name="durable-encryption-reading-data"></a>

Due API di lettura restituiscono dati di esecuzione durevoli:
+ `GetDurableExecution`restituisce lo stato corrente di una singola esecuzione, incluso il payload di input, i dati di checkpoint più recenti e le informazioni sui risultati o sugli errori.
+ `GetDurableExecutionHistory`restituisce l'elenco ordinato degli eventi emessi dall'esecuzione, mostrando gli input e i risultati del checkpoint, gli input e i risultati di invoke concatenati e il risultato finale.

Entrambe `IncludeExecutionData` le API accettano un parametro di richiesta. In caso `IncludeExecutionData` `true` affermativo, Lambda utilizza le credenziali del chiamante per richiamare la chiave gestita dal `kms:Decrypt` cliente. Lambda restituisce quindi i dati di esecuzione decrittografati nella risposta. L'identità del chiamante deve essere riportata `kms:Decrypt` sulla chiave gestita dal cliente.

In tal caso `IncludeExecutionData``false`, Lambda non chiama AWS KMS né decrittografa i dati di esecuzione e la risposta viene impostata su. `ExecutionDataIncluded` `false` La risposta include ancora`DurableConfig`, il che riprende l'ARN chiave gestita dal cliente utilizzata dall'esecuzione. `IncludeExecutionData`l'impostazione predefinita è`false`, quindi i chiamanti che necessitano solo di metadati non necessitano di autorizzazioni. AWS KMS 

**`GetDurableExecution`Esempio: risposta con `IncludeExecutionData=false`**

```
{
    "DurableExecutionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction:execution:exec-abc123",
    "DurableExecutionName": "exec-abc123",
    "FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction",
    "StartTimestamp": 1733256000,
    "Status": "RUNNING",
    "ExecutionDataIncluded": false,
    "DurableConfig": {
        "ExecutionTimeout": 3600,
        "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id",
        "RetentionPeriodInDays": 30
    }
}
```

## Richiami concatenati
<a name="durable-encryption-chained-invokes"></a>

Quando una funzione durevole utilizza un invoke concatenato per chiamare un'altra funzione duratura, Lambda considera l'esecuzione secondaria come un'esecuzione duratura indipendente: ha il proprio ID di esecuzione, il proprio flusso di checkpoint e la propria chiave gestita dal cliente. La configurazione delle chiavi gestite dal cliente del genitore non ha alcun effetto sui dati del figlio e la configurazione delle chiavi gestite dal cliente del figlio non ha alcun effetto sui dati del genitore.

**Permissions**  
Il responsabile del servizio Lambda deve avere `kms:GenerateDataKey` e `kms:Decrypt` sulla chiave gestita dal cliente della funzione secondaria. Se le funzioni principale e secondaria utilizzano chiavi gestite dal cliente diverse, si concede al servizio l'accesso principale a ciascuna chiave separatamente. Il ruolo di esecuzione della funzione principale non richiede le autorizzazioni sulla chiave gestita dal cliente del figlio.

**Identificare quale chiave ha crittografato quale esecuzione**  
Entrambi `GetDurableExecution` `ListDurableExecutionsByFunction` restituiscono l'ARN della chiave gestita dal cliente che ha crittografato ogni esecuzione. Utilizza queste API per confermare quale chiave era attiva quando è iniziata l'esecuzione principale o secondaria.

## Caching della chiave dei dati
<a name="durable-encryption-data-key-caching"></a>

Per ridurre il volume delle AWS KMS chiamate e migliorare la disponibilità durante le interruzioni del servizio, Lambda memorizza nella cache una chiave dati generata dalla chiave gestita dal cliente per un massimo di 15 minuti. Mentre la cache è calda, Lambda riutilizza la stessa chiave di dati tra le operazioni all'interno di un'esecuzione e tra le esecuzioni avviate durante la finestra della cache.

**Costo**  
Per-execution AWS KMS il costo rimane basso perché Lambda chiama `GenerateDataKey` al massimo una volta per finestra della cache, non una volta per checkpoint. A tassi di richiesta elevati, il costo per esecuzione diminuisce ulteriormente perché più esecuzioni condividono ogni chiave di dati memorizzata nella cache. Ti vengono fatturate le AWS KMS chiamate effettivamente effettuate da Lambda, non per ogni checkpoint o lettura.

**Stabilità statica**  
Le chiavi dati rimangono memorizzate nella cache per un massimo di 15 minuti. Le modifiche alla chiave hanno effetto al successivo aggiornamento della cache. Durante le interruzioni prolungate del servizio, Lambda continua a funzionare dalla cache, mantenendo attive le esecuzioni in corso.

**CloudTrail**  
La memorizzazione nella cache delle chiavi di dati consente di visualizzare meno `GenerateDataKey` eventi CloudTrail rispetto alle esecuzioni o ai checkpoint. Vedi ad esempio gli [Monitoraggio delle chiavi KMS per funzioni durevoli](#durable-encryption-monitoring) eventi.

## Quando la chiave gestita dal cliente non è disponibile
<a name="durable-encryption-key-unavailable"></a>

Se la chiave gestita dal cliente con cui è iniziata l'esecuzione è disabilitata, ne è pianificata l'eliminazione o ne è stato revocato l'accesso tramite la politica delle chiavi, l'esecuzione non può compiere ulteriori progressi. Al checkpoint successivo, Lambda fallisce l'esecuzione con un AWS KMS errore irreversibile. Il ripristino dell'accesso alla chiave non riprende automaticamente l'esecuzione. È necessario iniziare una nuova esecuzione.

Le API che leggono o scrivono payload falliscono anche quando la chiave non è disponibile. Possono restituire una delle seguenti eccezioni:
+ `KMSAccessDeniedException`: Lambda non è riuscita a decrittografare i dati di esecuzione durevoli perché l'accesso alla chiave KMS è stato negato.
+ `KMSDisabledException`: Lambda non è riuscita a decrittografare i dati di esecuzione durevoli perché la chiave KMS è disabilitata.
+ `KMSInvalidStateException`: Lambda non è riuscita a decrittografare i dati di esecuzione durevoli perché lo stato della chiave KMS non è valido per. `Decrypt`
+ `KMSNotFoundException`: Lambda non è riuscita a decrittografare i dati di esecuzione durevoli perché la chiave KMS non è stata trovata.

Il ripristino dell'accesso alla chiave KMS consente a queste API di lettura di avere nuovamente successo per le esecuzioni già fallite. Le esecuzioni non riuscite rimangono fallite; è necessario iniziare una nuova esecuzione.

Per controllare i metadati di esecuzione mentre la chiave KMS non è disponibile, chiama con. `GetDurableExecution` `IncludeExecutionData=false` Ciò restituisce lo stato dell'esecuzione, i timestamp e `DurableConfig` (inclusa la chiave KMS ARN) senza chiamare. AWS KMS

Poiché Lambda memorizza nella cache le chiavi dati, la disabilitazione di una chiave non ha effetto immediato. Per informazioni dettagliate, vedi [Caching della chiave dei dati](#durable-encryption-data-key-caching).

**Importante**  
L'eliminazione di una chiave KMS da cui dipendono ancora le esecuzioni in corso o mantenute comporta la distruzione permanente di tali esecuzioni e della loro cronologia.

## Monitoraggio delle chiavi KMS per funzioni durevoli
<a name="durable-encryption-monitoring"></a>

Quando utilizzi una chiave gestita dal cliente con una funzione durevole, puoi utilizzarla [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)per tenere traccia delle AWS KMS chiamate che Lambda effettua per tuo conto. Per indicazioni generali sulla ricerca di AWS KMS eventi, consulta [Searching AWS KMS API Activity](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html#searching-kms-ct).

Per confermare che Lambda stia utilizzando la tua chiave come previsto, cerca questi campi in ogni evento:
+ `eventName`: uno dei `GenerateDataKey``Decrypt`, o `DescribeKey`
+ `eventSource`: `kms.amazonaws.com`
+ `userIdentity.invokedBy`: `lambda.amazonaws.com`
+ `requestParameters.encryptionContext.aws:lambda:FunctionArn`: l'ARN della funzione duratura

Gli esempi seguenti sono CloudTrail gli eventi di una `UpdateFunctionConfiguration` chiamata `CreateFunction` or che configura una chiave gestita dal cliente su una funzione durevole. Lambda effettua tre AWS KMS chiamate per convalidare la chiave: una vera e propria e funzionante a `DescribeKey` secco. `GenerateDataKey` `Decrypt`

------
#### [ GenerateDataKey ]

Quando si imposta o si modifica l'ingresso`DurableConfig`, Lambda esegue una prova `KMSKeyArn` a secco sulla chiave gestita dal cliente per verificare che la policy delle chiavi consenta a Lambda di derivare le chiavi di dati per il `GenerateDataKey` contesto di crittografia di questa funzione. Il dry-run non esegue alcuna operazione crittografica ma registra un evento completo. CloudTrail L'evento di esempio seguente registra l'operazione dry-run: `GenerateDataKey`

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:example",
        "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
        "accountId": "111122223333",
        "accessKeyId": "ASIA123456789EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
                "accountId": "111122223333",
                "userName": "FunctionAuthor"
            },
            "attributes": {
                "creationDate": "2026-01-15T16:54:42Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "lambda.amazonaws.com"
    },
    "eventTime": "2026-01-15T16:55:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "lambda.amazonaws.com",
    "userAgent": "lambda.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "encryptionContext": {
            "aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
        },
        "dryRun": true,
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id",
        "keySpec": "AES_256"
    },
    "responseElements": null,
    "additionalEventData": {
        "keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ Decrypt ]

Quando si imposta o si modifica l'ingresso`DurableConfig`, Lambda esegue anche una prova `KMSKeyArn` a secco sulla chiave gestita dal cliente per verificare che la policy delle chiavi consenta a Lambda di decrittografare i dati per il `Decrypt` contesto di crittografia di questa funzione. Il dry-run utilizza, quindi non è necessario un vero testo cifrato. `IGNORE_CIPHERTEXT` L'evento di esempio seguente registra l'operazione dry-run: `Decrypt`

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:example",
        "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
        "accountId": "111122223333",
        "accessKeyId": "ASIA123456789EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
                "accountId": "111122223333",
                "userName": "FunctionAuthor"
            },
            "attributes": {
                "creationDate": "2026-01-15T16:54:42Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "lambda.amazonaws.com"
    },
    "eventTime": "2026-01-15T16:55:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "lambda.amazonaws.com",
    "userAgent": "lambda.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "encryptionContext": {
            "aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
        },
        "dryRun": true,
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id",
        "dryRunModifiers": ["IGNORE_CIPHERTEXT"],
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "additionalEventData": {
        "keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ DescribeKey ]

Quando imposti o modifichi l'ingresso `KMSKeyArn``DurableConfig`, Lambda chiama `DescribeKey` per confermare che la chiave è simmetrica e abilitata prima che accetti la modifica. A differenza delle `Decrypt` sonde `GenerateDataKey` and, si tratta di una chiamata reale, non di un funzionamento a secco. L’evento di esempio seguente registra l’operazione `DescribeKey`:

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:example",
        "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
        "accountId": "111122223333",
        "accessKeyId": "ASIA123456789EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
                "accountId": "111122223333",
                "userName": "FunctionAuthor"
            },
            "attributes": {
                "creationDate": "2026-01-15T16:54:42Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "lambda.amazonaws.com"
    },
    "eventTime": "2026-01-15T16:55:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "lambda.amazonaws.com",
    "userAgent": "lambda.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
    },
    "responseElements": null,
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------

## Argomenti correlati alla crittografia
<a name="durable-encryption-related"></a>
+ [Crittografia dei dati a riposo per Lambda](security-encryption-at-rest.md)
+ [Protezione delle variabili di ambiente Lambda](configuration-envvars-encryption.md)
+ [Crittografia dei pacchetti di distribuzione Lambda .zip](encrypt-zip-package.md)
+ [Modello di sicurezza per Lambda SnapStart](snapstart-security.md)
+ [Configura le funzioni durevoli Lambda](durable-configuration.md)