

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Chiffrement AWS Lambda données d'exécution durables
<a name="durable-encryption"></a>

Grâce à des [fonctions AWS Lambda durables](durable-functions.md), vous pouvez créer des applications résilientes en plusieurs étapes qui s'exécutent jusqu'à un an, en utilisant des points de contrôle pour récupérer chaque exécution en cas d'échec en rejouant le travail terminé.

Lambda chiffre toujours les données d'exécution durables au repos. Vous pouvez également configurer votre propre clé gérée par le AWS KMS client sur la fonction de contrôle de rotation, de visibilité des audits ou de conformité. Avec une clé gérée par le client, seuls les principaux que vous autorisez peuvent lire les données d'exécution.

## Comment fonctionne le chiffrement
<a name="durable-encryption-how-it-works"></a>

Une exécution durable Lambda utilise la même clé KMS avec laquelle elle a commencé pendant toute sa durée de vie. La modification ou la suppression de la touche de la fonction n'affecte que les exécutions qui démarrent après la modification. Découvrez [Lorsque la clé gérée par le client n'est pas disponible](#durable-encryption-key-unavailable) comment se comporte une exécution durable lorsque sa clé n'est pas disponible.

Les clés gérées par le client entraînent des AWS KMS frais standard. Pour plus d’informations sur la tarification, consultez [Tarification AWS Key Management Service](https://aws.amazon.com/kms/pricing/).

## Qu'est-ce qui est crypté
<a name="durable-encryption-what-is-encrypted"></a>

Lorsque vous configurez une clé gérée par le client sur une fonction durable, Lambda utilise cette clé pour chiffrer les données d'exécution durables suivantes au repos :
+ La charge utile d'entrée que vous transmettez à chaque `Invoke` demande.
+ Les données des points de contrôle sont conservées par l'`CheckpointDurableExecution`API, notamment les résultats des étapes, les erreurs d'étape et les entrées d'appel chaînées.
+ Résultats d'exécution et erreurs.
+ Résultats des rappels et erreurs que vous soumettez par le biais de `SendDurableExecutionCallbackSuccess` et`SendDurableExecutionCallbackFailure`.

**Function-level et les clés d'exécution durables sont indépendantes**  
Le niveau de fonction `KMSKeyArn` qui chiffre les [variables d'environnement](configuration-envvars-encryption.md), les [packages de déploiement .zip](encrypt-zip-package.md) et les [SnapStart](snapstart-security.md)instantanés est distinct de `DurableConfig` celui qui chiffre les données d'`KMSKeyArn`exécution durables. Régler l'un ne définit pas l'autre. Vous pouvez utiliser la même clé KMS pour les deux, ou vous pouvez utiliser des clés KMS différentes.

## Configurer le chiffrement des clés géré par le client
<a name="durable-encryption-setup"></a>

La configuration du chiffrement par clé géré par le client pour une fonction durable est un processus en trois étapes. Effectuez les étapes suivantes dans l'ordre.

### Création d’une clé gérée par le client
<a name="durable-encryption-create-key"></a>

Les fonctions durables prennent en charge le chiffrement symétrique des clés KMS dans la même AWS région que la fonction. Cross-Region les touches ne sont pas prises en charge. Pour créer une clé symétrique gérée par le client, suivez les étapes de [création de clés KMS de chiffrement symétriques](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) décrites dans le guide du *AWS Key Management Service développeur*.

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

Vous accordez AWS KMS des autorisations par le biais de la politique clé de la clé KMS.

La configuration d'une clé gérée par le client nécessite AWS KMS des autorisations sur le principal qui crée ou met à jour la fonction. L'invocation d'une fonction durable ne nécessite aucune AWS KMS autorisation de la part de l'appelant ; Lambda effectue le chiffrement avec son principal de service.

#### Stratégie de clé
<a name="durable-encryption-key-policy"></a>

Les [stratégies de clé](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) contrôlent l’accès à votre clé gérée par le client. Chaque clé gérée par le client doit avoir exactement une politique clé. Dans une politique de clé, `Resource: "*"` fait uniquement référence à la clé KMS à laquelle la politique est attachée, et non à toutes les clés KMS de votre compte.

La politique clé d'une fonction durable accorde à chaque principal uniquement les AWS KMS actions dont il a besoin, définies par l'ARN du service et de la fonction. Les sections suivantes décrivent les instructions, les conditions et un exemple complet.

**Déclarations de politique requises**  
La politique accorde les fonctionnalités suivantes :
+ **Activez les autorisations des utilisateurs IAM**. Accorde au root du compte un accès inconditionnel à la gestion de la clé. Cette instruction n'impose aucune condition, car son étendue vous empêcherait de faire pivoter, de mettre à jour ou de supprimer la clé.
+ **Autorisez Lambda à utiliser cette clé pour des fonctions durables.** Accorde le principal `kms:GenerateDataKey` du service Lambda et. `kms:Decrypt`
+ **Autorisez le rôle d'exécution de la fonction à déchiffrer les données d'exécution durables**. Accorde le rôle d'exécution `kms:Decrypt` pour lire l'état et faire avancer l'exécution.
+ **Permettez à l'auteur de la fonction de décrire cette clé**. Des subventions `kms:DescribeKey` pour que Lambda puisse valider que la clé est symétrique et activée pendant ou. `CreateFunction` `UpdateFunctionConfiguration`
+ **Autorisez l'auteur de la fonction à valider cette clé pour une fonction spécifique**. `kms:Decrypt`Ainsi, Lambda peut valider les autorisations clés et l'accès avec le contexte de chiffrement de la fonction pendant `CreateFunction` ou. `kms:GenerateDataKey` `UpdateFunctionConfiguration` Cela confirme que la politique des touches accepte les appels pour cette fonction spécifique avant que la fonction ne soit créée ou mise à jour.
+ **Permettez aux opérateurs d'exécution durables**. Accorde des opérateurs `kms:Decrypt` pour les appels vers `GetDurableExecution``IncludeExecutionData=true`, `GetDurableExecutionHistory` avec`GetDurableExecutionState`,`StopDurableExecution`, et les API de rappel.

Il est recommandé d'utiliser des principes distincts pour le rôle d'exécution, l'auteur de la fonction et l'opérateur d'exécution durable afin que chaque identité ne dispose que des fonctionnalités dont elle a besoin.

**Conditions politiques recommandées**  
La politique utilise les conditions suivantes pour limiter l'accès :
+ [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)restreint l'utilisation des clés aux demandes acheminées via Lambda. L'application de cette méthode aux instructions du rôle d'exécution, de l'auteur de la fonction et de l'opérateur les empêche d'utiliser directement la clé 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)et [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)protégez-vous contre le [problème de confusion entre les services adjoints.](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html) Lambda transmet ces valeurs lorsqu'il appelle AWS KMS en utilisant ses propres informations d'identification de service. Cette condition s'applique uniquement à la déclaration principale du service Lambda. Les instructions relatives au rôle d'exécution, à l'auteur de la fonction et à l'opérateur appellent AWS KMS avec les informations d'identification de la session d'accès direct de l'appelant, qui ne contiennent pas ces en-têtes.
+ [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)permet d'accéder à la clé d'une fonction spécifique. Lambda ajoute cela au contexte de chiffrement de chaque AWS KMS appel pour des données d'exécution durables.

L'exemple suivant combine les instructions et les conditions ci-dessus.

**Example Politique clé pour des fonctions durables**  

```
{
    "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"
                }
            }
        }
    ]
}
```

Pour plus d'informations sur les politiques AWS KMS clés, consultez [Comment modifier une politique clé](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to) dans le *Guide du AWS Key Management Service développeur*.

### Configuration d'une clé gérée par le client sur une fonction durable
<a name="durable-encryption-configure"></a>

Vous configurez la clé gérée par le client pour des données d'exécution durables via le `KMSKeyArn` champ de l'`DurableConfig`objet. Réglez-le lorsque vous créez la fonction avec [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html); mettez-le à jour sur une fonction durable existante avec [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html).

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

**Pour configurer une clé gérée par le client sur une fonction durable existante**

1. Ouvrez la [page Functions](https://console.aws.amazon.com/lambda/home#/functions) (Fonctions) de la console Lambda.

1. Choisissez une fonction durable.

1. Choisissez **Configuration**, puis **Exécution durable** dans la barre de navigation de gauche.

1. Choisissez **Modifier**.

1. Sous **Chiffrement**, choisissez **Utiliser une clé gérée par le client**, puis choisissez une clé KMS dans la liste.

1. Choisissez **Enregistrer**.

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

**Pour configurer une clé gérée par le client lorsque vous créez une fonction**

Dans l'exemple de [fonction de création](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) suivant, l'`--durable-config`option spécifie l'ARN de la clé géré par le client ainsi que le délai d'exécution durable et la période de rétention.

```
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}'
```

**Pour configurer une clé gérée par le client sur une fonction durable existante**

Utilisez la commande [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html). Incluez tous les `DurableConfig` champs que vous souhaitez conserver, car cela `--durable-config` remplace l'objet dans son intégralité.

```
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}'
```

**Pour supprimer la clé gérée par le client d'une fonction durable**

Omettre `KMSKeyArn` de. `--durable-config` Les exécutions existantes continuent d'utiliser la clé gérée par le client avec laquelle elles ont commencé. Les nouvelles exécutions utilisent plutôt le chiffrement par défaut.

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

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

Dans une `AWS::Lambda::Function` ressource, définissez la `KMSKeyArn` propriété de `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
```

------

**Important**  
Chaque exécution durable utilise la clé gérée par le client qui a été configurée sur la fonction lors de son démarrage. La modification ou la suppression de la clé n'affecte que les exécutions qui démarrent après la modification ; les exécutions en cours continuent d'utiliser la clé avec laquelle elles ont débuté jusqu'à ce qu'elles se terminent ou échouent.

## Lecture de données d'exécution durables
<a name="durable-encryption-reading-data"></a>

Deux API de lecture renvoient des données d'exécution durables :
+ `GetDurableExecution`renvoie l'état actuel d'une seule exécution, y compris sa charge utile d'entrée, les dernières données de point de contrôle et les informations relatives aux résultats ou aux erreurs.
+ `GetDurableExecutionHistory`renvoie la liste ordonnée des événements émis par l'exécution, indiquant les entrées et les résultats des points de contrôle, les entrées et les résultats des appels en chaîne, ainsi que le résultat final.

Les deux API acceptent un paramètre de `IncludeExecutionData` requête. Dans `IncludeExecutionData` ce cas`true`, Lambda utilise les informations d'identification de l'appelant pour appeler la clé gérée par `kms:Decrypt` le client. Lambda renvoie ensuite les données d'exécution déchiffrées dans la réponse. L'identité de l'appelant doit figurer `kms:Decrypt` sur la clé gérée par le client.

Dans `IncludeExecutionData` ce cas`false`, Lambda n'appelle AWS KMS ni ne déchiffre les données d'exécution, et la réponse est définie sur. `ExecutionDataIncluded` `false` La réponse inclut toujours`DurableConfig`, ce qui fait écho à la clé ARN gérée par le client utilisée par l'exécution. `IncludeExecutionData`est défini par défaut sur`false`, de sorte que les appelants qui n'ont besoin que de métadonnées n'ont pas besoin d' AWS KMS autorisations.

**Exemple : `GetDurableExecution` réponse avec `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
    }
}
```

## Invoques enchaînées
<a name="durable-encryption-chained-invokes"></a>

Lorsqu'une fonction durable utilise un appel enchaîné pour appeler une autre fonction durable, Lambda traite l'exécution enfant comme une exécution durable indépendante : elle possède son propre identifiant d'exécution, son propre flux de points de contrôle et sa propre clé gérée par le client. La configuration des clés gérées par le client du parent n'a aucun effet sur les données de l'enfant, et la configuration des clés gérées par le client de l'enfant n'a aucun effet sur les données du parent.

**Permissions**  
Le responsable du service Lambda doit avoir `kms:GenerateDataKey` et `kms:Decrypt` sur la clé gérée par le client de la fonction enfant. Si les fonctions parent et enfant utilisent des clés gérées par le client différentes, vous accordez au principal du service l'accès à chaque clé séparément. Le rôle d'exécution de la fonction parent n'a pas besoin d'autorisations sur la clé gérée par le client de l'enfant.

**Identifier quelle clé a chiffré quelle exécution**  
Les deux `GetDurableExecution` et `ListDurableExecutionsByFunction` renvoyez l'ARN de la clé gérée par le client qui a chiffré chaque exécution. Utilisez ces API pour vérifier quelle clé était active au début de l'exécution d'un parent ou d'un enfant.

## Mise en cache des clés de données
<a name="durable-encryption-data-key-caching"></a>

Pour réduire le volume d' AWS KMS appels et améliorer la disponibilité en cas d'interruption de service, Lambda met en cache une clé de données générée à partir de votre clé gérée par le client pendant 15 minutes maximum. Lorsque le cache est chaud, Lambda réutilise la même clé de données entre les opérations d'une exécution et entre les exécutions démarrées pendant la fenêtre de cache.

**Cost**  
Per-execution AWS KMS le coût reste faible car Lambda appelle `GenerateDataKey` au plus une fois par fenêtre de cache, et non une fois par point de contrôle. Lorsque les taux de demandes sont élevés, le coût par exécution diminue encore car un plus grand nombre d'exécutions partagent chaque clé de données mise en cache. Vous êtes facturé pour les AWS KMS appels que Lambda passe réellement, et non pour chaque point de contrôle ou chaque lecture.

**Stabilité statique**  
Les clés de données restent en cache pendant 15 minutes maximum. Les modifications apportées à votre clé prennent effet lors de la prochaine actualisation du cache. Pendant les interruptions de service prolongées, Lambda continue de servir à partir du cache, ce qui permet de poursuivre les exécutions en cours.

**CloudTrail**  
La mise en cache des clés de données signifie que vous voyez moins d'`GenerateDataKey`événements CloudTrail que d'exécutions ou de points de contrôle. Voir par [Surveillance des clés KMS pour des fonctions durables](#durable-encryption-monitoring) exemple les événements.

## Lorsque la clé gérée par le client n'est pas disponible
<a name="durable-encryption-key-unavailable"></a>

Si la clé gérée par le client avec laquelle une exécution a débuté est désactivée, si sa suppression est planifiée ou si son accès est révoqué par le biais de la politique des clés, l'exécution ne peut pas progresser davantage. Au point de contrôle suivant, Lambda échoue à l'exécution avec une AWS KMS erreur non réessayable. Le rétablissement de l'accès à la clé ne reprend pas automatiquement l'exécution. Vous devez lancer une nouvelle exécution.

Les API qui lisent ou écrivent des charges utiles échouent également lorsque la clé n'est pas disponible. Ils peuvent renvoyer l'une des exceptions suivantes :
+ `KMSAccessDeniedException`: Lambda n'a pas pu déchiffrer les données d'exécution durables car l'accès à la clé KMS a été refusé.
+ `KMSDisabledException`: Lambda n'a pas pu déchiffrer les données d'exécution durables car la clé KMS est désactivée.
+ `KMSInvalidStateException`: Lambda n'a pas pu déchiffrer les données d'exécution durables car l'état de la clé KMS n'est pas valide pour. `Decrypt`
+ `KMSNotFoundException`: Lambda n'a pas pu déchiffrer les données d'exécution durables car la clé KMS est introuvable.

La restauration de l'accès à la clé KMS permet à ces API de lecture de réussir à nouveau pour les exécutions qui ont déjà échoué. Les exécutions échouées restent des échecs ; vous devez recommencer une nouvelle exécution.

Pour inspecter les métadonnées d'exécution lorsque la clé KMS n'est pas disponible, appelez `GetDurableExecution` le`IncludeExecutionData=false`. Cela renvoie l'état de l'exécution, les horodatages et `DurableConfig` (y compris l'ARN de la clé KMS) sans appel. AWS KMS

Comme Lambda met en cache les clés de données, la désactivation d'une clé ne prend pas effet immédiatement. Pour en savoir plus, consultez [Mise en cache des clés de données](#durable-encryption-data-key-caching).

**Important**  
La suppression d'une clé KMS dont dépendent toujours les exécutions en cours ou conservées détruit définitivement ces exécutions et leur historique.

## Surveillance des clés KMS pour des fonctions durables
<a name="durable-encryption-monitoring"></a>

Lorsque vous utilisez une clé gérée par le client dotée d'une fonction durable, vous pouvez l'utiliser [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)pour suivre les AWS KMS appels que Lambda passe en votre nom. Pour obtenir des conseils généraux sur les AWS KMS événements de recherche, consultez [la section Activité des AWS KMS API de recherche](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html#searching-kms-ct).

Pour vérifier que Lambda utilise votre clé comme prévu, recherchez les champs suivants dans chaque événement :
+ `eventName`: l'un des `GenerateDataKey``Decrypt`, ou `DescribeKey`
+ `eventSource`: `kms.amazonaws.com`
+ `userIdentity.invokedBy`: `lambda.amazonaws.com`
+ `requestParameters.encryptionContext.aws:lambda:FunctionArn`: l'ARN de la fonction durable

Les exemples suivants sont CloudTrail des événements issus d'un `UpdateFunctionConfiguration` appel `CreateFunction` ou qui configure une clé gérée par le client sur une fonction durable. Lambda émet trois AWS KMS appels pour valider la clé : une clé réelle`DescribeKey`, une clé à sec `GenerateDataKey` et. `Decrypt`

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

Lorsque vous définissez ou modifiez l'entrée`DurableConfig`, Lambda émet une analyse `KMSKeyArn` à sec `GenerateDataKey` sur la clé gérée par le client pour valider que la politique en matière de clés permet à Lambda de dériver des clés de données pour le contexte de chiffrement de cette fonction. Le dry-run n'effectue aucun travail cryptographique mais enregistre un événement complet. CloudTrail L'exemple d'événement suivant enregistre l'opération de séchage : `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 ]

Lorsque vous définissez ou modifiez l'entrée`DurableConfig`, Lambda émet également un essai `KMSKeyArn` à sec sur la clé gérée par le client pour valider que la politique de clé autorise Lambda à déchiffrer les données pour le `Decrypt` contexte de chiffrement de cette fonction. Le dry-run utilise`IGNORE_CIPHERTEXT`, donc aucun véritable texte chiffré n'est requis. L'exemple d'événement suivant enregistre l'opération de séchage : `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 ]

Lorsque vous définissez ou modifiez l'entrée `KMSKeyArn``DurableConfig`, Lambda appelle `DescribeKey` pour confirmer que la clé est symétrique et activée avant d'accepter la modification. Contrairement aux `Decrypt` sondes `GenerateDataKey` et, il s'agit d'un véritable appel, et non d'un essai à sec. L’exemple d’événement suivant enregistre l’opération `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"
}
```

------

## Sujets de chiffrement connexes
<a name="durable-encryption-related"></a>
+ [Chiffrement des données au repos pour Lambda](security-encryption-at-rest.md)
+ [Sécurisation des variables d'environnement Lambda](configuration-envvars-encryption.md)
+ [Chiffrement des packages de déploiement Lambda .zip](encrypt-zip-package.md)
+ [Modèle de sécurité pour Lambda SnapStart](snapstart-security.md)
+ [Configurer les fonctions durables de Lambda](durable-configuration.md)