

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.

# Stockage éphémère des tâches Fargate pour Amazon ECS
<a name="fargate-task-storage"></a>

Une fois provisionnée, chaque tâche Amazon ECS hébergée sur des conteneurs Linux AWS Fargate reçoit le stockage éphémère suivant pour les montages liés. Ils peuvent être montés et partagés entre les conteneurs en utilisant les paramètres `volumes`, `mountPoints` et `volumesFrom` dans la définition de tâche. Cela n'est pas pris en charge pour les conteneurs Windows sur AWS Fargate.

## Versions de la plateforme de conteneurs Linux Fargate
<a name="fargate-task-storage-linux-pv"></a>

### Version 1.4.0 ou ultérieure
<a name="fargate-task-storage-pv14"></a>

Par défaut, les tâches Amazon ECS sur Fargate utilisant la version `1.4.0` ou ultérieure de la plateforme reçoivent un minimum de 20 Gio de stockage éphémère. La quantité totale de stockage éphémère peut être augmentée, jusqu'à un maximum de 200 Gio. Vous pouvez effectuer cette opération en spécifiant le paramètre `ephemeralStorage` dans votre définition de tâche.

Les images de conteneur extraites, compressées et non compressées de la tâche sont stockées sur le stockage éphémère. Pour déterminer la quantité totale de stockage éphémère que votre tâche doit utiliser, vous devez soustraire la quantité de stockage utilisée par votre image de conteneur de la quantité totale de stockage éphémère alloué à votre tâche.

Pour les tâches utilisant la version `1.4.0` ou ultérieure de la plateforme qui sont lancées le 28 mai 2020 ou plus tard, le stockage éphémère est chiffré à l'aide d'un algorithme de chiffrement AES-256. Cet algorithme utilise une AWS clé de chiffrement propre, ou vous pouvez créer votre propre clé gérée par le client. Pour plus d'informations, consultez la section [Clés gérées par le client pour le AWS Fargate stockage éphémère](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-storage-encryption.html).

Pour les tâches utilisant la version `1.4.0` ou ultérieure de la plateforme qui sont lancées le 18 novembre 2022 ou plus tard, l'utilisation du stockage éphémère est signalée sur le point de terminaison des métadonnées de la tâche. Dans le cadre de vos tâches, vos applications peuvent interroger le point de terminaison des métadonnées des tâches, version 4, pour connaître la taille réservée au stockage éphémère et la quantité utilisée. 

 En outre, la taille réservée au stockage éphémère et la quantité utilisée sont envoyées à Amazon CloudWatch Container Insights si vous activez Container Insights.

**Note**  
Fargate réserve de l'espace sur le disque. Il n'est utilisé que par Fargate. Vous n'êtes pas facturé pour cela. Cela n'apparaît pas dans ces statistiques. Toutefois, vous pouvez voir ce stockage supplémentaire dans d'autres outils tels que `df`.

### Version 1.3.0 ou antérieure
<a name="fargate-task-storage-pv13"></a>

Pour les tâches Amazon ECS sur Fargate utilisant la version `1.3.0` ou antérieure de la plateforme, chaque tâche reçoit le magasin éphémère suivant.
+ 10 Go de stockage de couche Docker
**Note**  
Ce volume inclut les artefacts d'image de conteneur compressée et non compressée.
+ 4 Go supplémentaires pour les montages de volume. Ils peuvent être montés et partagés entre les conteneurs en utilisant les paramètres `volumes`, `mountPoints` et `volumesFrom` dans la définition de tâche.

## Versions de la plateforme de conteneur Windows Fargate
<a name="fargate-task-storage-windows-pv"></a>

### Version 1.0.0 ou ultérieure
<a name="fargate-task-storage-pvws1"></a>

Par défaut, les tâches Amazon ECS sur Fargate utilisant la version `1.0.0` ou ultérieure de la plateforme reçoivent un minimum de 20 Gio de stockage éphémère. La quantité totale de stockage éphémère peut être augmentée, jusqu'à un maximum de 200 Gio. Vous pouvez effectuer cette opération en spécifiant le paramètre `ephemeralStorage` dans votre définition de tâche.

Les images de conteneur extraites, compressées et non compressées de la tâche sont stockées sur le stockage éphémère. Pour déterminer la quantité totale de stockage éphémère que votre tâche doit utiliser, vous devez soustraire la quantité de stockage utilisée par votre image de conteneur de la quantité totale de stockage éphémère alloué à votre tâche.

Pour de plus amples informations, veuillez consulter [Utilisation de montages liés avec Amazon ECS](bind-mounts.md).

# Clés gérées par le client pour le stockage AWS Fargate éphémère pour Amazon ECS
<a name="fargate-storage-encryption"></a>

AWS Fargate prend en charge les clés gérées par le client pour chiffrer les données relatives aux tâches Amazon ECS stockées dans un stockage éphémère afin d'aider les clients sensibles aux réglementations à respecter leurs politiques de sécurité internes. Les clients continuent de bénéficier des avantages sans serveur de Fargate, tout en offrant une meilleure visibilité sur le chiffrement du stockage autogéré aux auditeurs de conformité. Bien que Fargate dispose par défaut d’un chiffrement du stockage éphémère géré par Fargate, les clients peuvent également utiliser leurs propres clés autogérées pour chiffrer les données sensibles telles que les informations financières ou médicales.

Vous pouvez importer vos propres clés AWS KMS ou créer des clés dans AWS KMS. Ces clés autogérées sont stockées AWS KMS et exécutent des actions de AWS KMS cycle de vie standard telles que la rotation, la désactivation et la suppression. Vous pouvez vérifier l'accès aux clés et leur utilisation dans CloudTrail les journaux.

Par défaut, la clé KMS prend en charge 50 000 autorisations par clé. Fargate utilise une AWS KMS seule subvention par tâche clé gérée par le client, ce qui lui permet de prendre en charge jusqu'à 50 000 tâches simultanées pour une clé. Si vous souhaitez augmenter ce nombre, vous pouvez demander une augmentation de limite, qui est approuvée sur une case-by-case base régulière.

Fargate ne facture aucun supplément pour l’utilisation des clés gérées par le client. Le prix standard ne vous est facturé que pour l'utilisation des AWS KMS clés pour le stockage et les demandes d'API.

**Topics**
+ [Création d’une clé de chiffrement pour le stockage éphémère Fargate pour Amazon ECS](fargate-create-storage-key.md)
+ [Gestion des AWS KMS clés pour le stockage éphémère Fargate pour Amazon ECS](fargate-managing-kms-key.md)

# Création d’une clé de chiffrement pour le stockage éphémère Fargate pour Amazon ECS
<a name="fargate-create-storage-key"></a>

Créer une clé gérée par le client pour le chiffrement des données stockées dans le stockage éphémère Fargate.

**Note**  
Le chiffrement du stockage éphémère Fargate avec des clés gérées par le client n’est pas disponible pour les clusters de tâches Windows.  
Le chiffrement du stockage éphémère Fargate avec des clés gérées par le client n’est pas disponible sur les `platformVersions` antérieures à la version `1.4.0`.  
Fargate réserve de l’espace sur un espace de stockage éphémère qui n’est utilisé que par Fargate, et cet espace ne vous est pas facturé. L’allocation peut différer des tâches de clés non gérées par le client, mais l’espace total reste le même. Vous pouvez visualiser cette modification dans des outils tels que `df`.  
Les clés multirégion ne sont pas prises en charge pour le stockage éphémère Fargate.  
Les alias de clé KMS ne sont pas pris en charge pour le stockage éphémère Fargate.

Pour créer une clé gérée par le client (CMK) afin de chiffrer le stockage éphémère pour Fargate in, procédez comme suit. AWS KMS

1. Accédez au fichier [https://console.aws.amazon.com/km.](https://console.aws.amazon.com/kms)

1. Suivez les instructions de la section [Création de clés](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html) dans le [Guide du développeur AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html).

1. Lorsque vous créez votre AWS KMS clé, assurez-vous de fournir les autorisations d'opération AWS KMS pertinentes pour le service Fargate dans les politiques clés. Les opérations d’API suivantes doivent être autorisées dans la politique pour pouvoir utiliser votre clé gérée par le client avec vos ressources de cluster Amazon ECS.
   + `kms:GenerateDataKeyWithoutPlainText`‐ Appelez `GenerateDataKeyWithoutPlainText` pour générer une clé de données cryptée à partir de la AWS KMS clé fournie.
   + `kms:CreateGrant` : ajoute un octroi à une clé gérée par le client. Accorde un accès de contrôle à une AWS KMS clé spécifiée, ce qui permet d'autoriser les opérations requises par Amazon ECS Fargate. Pour plus d’informations à propos de l’[Utilisation des octrois](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html), consultez le [Guide du développeur AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html). Cela permet à Amazon ECS Fargate d’effectuer les opérations suivantes :
     + Appelez `Decrypt` pour AWS KMS obtenir la clé de chiffrement permettant de déchiffrer les données de stockage éphémères.
     + Configurer un principal sortant pour permettre au service de `RetireGrant`.
   + `kms:DescribeKey` : fournit les détails de la clé gérée par le client pour permettre à Amazon ECS de valider la clé si elle est symétrique et activée.

   L'exemple suivant montre une politique de AWS KMS clé que vous devez appliquer à la clé cible pour le chiffrement. Pour utiliser les exemples d’instructions de politique, remplacez les *user input placeholders* informations par les vôtres. Comme toujours, configurez uniquement les autorisations dont vous avez besoin, mais vous devrez AWS KMS fournir des autorisations à au moins un utilisateur pour éviter les erreurs.

   ```
   {
         "Sid": "Allow generate data key access for Fargate tasks.",
         "Effect": "Allow",
         "Principal": { "Service":"fargate.amazonaws.com" },
         "Action": [
           "kms:GenerateDataKeyWithoutPlaintext"
         ],
         "Condition": {
           "StringEquals": {
             "kms:EncryptionContext:aws:ecs:clusterAccount": [
               "customerAccountId"
             ],
             "kms:EncryptionContext:aws:ecs:clusterName": [
                "clusterName"
             ]   
           }
         },
         "Resource": "*"
       },
       {
         "Sid": "Allow grant creation permission for Fargate tasks.",
         "Effect": "Allow",
         "Principal": { "Service":"fargate.amazonaws.com" },
         "Action": [
           "kms:CreateGrant"
         ],
         "Condition": {
           "StringEquals": {
             "kms:EncryptionContext:aws:ecs:clusterAccount": [
               "customerAccountId"
             ],
             "kms:EncryptionContext:aws:ecs:clusterName": [
                "clusterName"
             ]   
           },
          "ForAllValues:StringEquals": {
             "kms:GrantOperations": [
                "Decrypt"
             ]
          }
         },
         "Resource": "*"
       },
       {
         "Sid": "Allow describe key permission for cluster operator - CreateCluster and UpdateCluster.",
         "Effect": "Allow",
         "Principal": { "AWS":"arn:aws:iam::customerAccountId:role/customer-chosen-role" },
         "Action": [
           "kms:DescribeKey"
         ],
         "Resource": "*"
       }
   ```

   Les tâches Fargate utilisent les clés de contexte de chiffrement `aws:ecs:clusterAccount` et `aws:ecs:clusterName` pour les opérations cryptographiques effectuées avec la clé. Les clients doivent ajouter ces autorisations pour restreindre l'accès à un and/or groupe de comptes spécifique. Utilisez le nom du cluster et non l’ARN lorsque vous spécifiez le cluster.

   Consultez [Contexte de chiffrement](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context) dans le [AWS KMS guide du développeur](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html) pour en savoir plus.

   Lors de la création ou de la mise à jour d’un cluster, vous avez la possibilité d’utiliser la clé de condition `fargateEphemeralStorageKmsKeyId`. Cette clé de condition permet aux clients d’exercer un contrôle plus précis sur les politiques IAM. Les mises à jour de configuration `fargateEphemeralStorageKmsKeyId` ne prennent effet que sur les nouveaux déploiements de service.

   L'exemple suivant montre comment autoriser les clients à n'accorder des autorisations qu'à un ensemble spécifique de AWS KMS clés approuvées.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "ecs:CreateCluster",
           "ecs:UpdateCluster"
         ],
         "Resource": "*",
         "Condition": {
           "StringEquals": {
             "ecs:fargate-ephemeral-storage-kms-key": "arn:aws:kms:us-west-2:111122223333:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
           }
         }
       }
     ]
   }
   ```

------

   Voici un exemple de refus des tentatives de suppression de AWS KMS clés déjà associées à un cluster.

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

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": {
       "Effect": "Deny",
       "Action": [
           "ecs:CreateCluster",
           "ecs:UpdateCluster"
       ],
       "Resource": "*",
       "Condition": {
         "Null": {
           "ecs:fargate-ephemeral-storage-kms-key": "true"
         }
       }
     }
   }
   ```

------

   Les clients peuvent voir si leurs tâches non gérées ou leurs tâches de service sont chiffrées à l'aide de la clé à l'aide des `describe-services` commandes AWS CLI `describe-tasks``describe-cluster`, ou.

   Pour plus d’informations, consultez la section [Clés de condition pour AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html) dans le [Guide du développeur AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html).

------
#### [ AWS Management Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Choisissez **Clusters** dans la navigation de gauche et **Créer un cluster** en haut à droite ou choisissez un cluster existant. Pour un cluster existant, choisissez **Mettre à jour le cluster** en haut à droite.

1. Dans la section **Chiffrement** du flux de travail, vous aurez la possibilité de sélectionner votre AWS KMS clé sous **Stockage géré et Stockage éphémère** **Fargate**. Vous pouvez également choisir de **créer une AWS KMS clé** à partir d'ici.

1. Choisissez **Créer** une fois que vous avez fini de créer votre cluster ou **Mettre à jour**, si vous mettiez à jour un cluster existant.

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

Voici un exemple de création d'un cluster et de configuration de votre stockage éphémère Fargate à l'aide AWS CLI du (remplacez *red* les valeurs par les vôtres) :

```
aws ecs create-cluster --cluster clusterName \
--configuration '{"managedStorageConfiguration":{"fargateEphemeralStorageKmsKeyId":"arn:aws:kms:us-west-2:012345678901:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"}}'
{
    "cluster": {
        "clusterArn": "arn:aws:ecs:us-west-2:012345678901:cluster/clusterName",
        "clusterName": "clusterName",
        "configuration": {
            "managedStorageConfiguration": {
                "fargateEphemeralStorageKmsKeyId": "arn:aws:kms:us-west-2:012345678901:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
            }
        },
        "status": "ACTIVE",
        "registeredContainerInstancesCount": 0,
        "runningTasksCount": 0,
        "pendingTasksCount": 0,
        "activeServicesCount": 0,
        "statistics": [],
        "tags": [],
        "settings": [],
        "capacityProviders": [],
        "defaultCapacityProviderStrategy": []
    },
    "clusterCount": 5
}
```

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

Voici un exemple de modèle de création d'un cluster et de configuration de votre stockage éphémère Fargate à l'aide CloudFormation du (remplacez *red* les valeurs par les vôtres) :

```
AWSTemplateFormatVersion: 2010-09-09
Resources:
  MyCluster: 
    Type: AWS::ECS::Cluster
    Properties: 
      ClusterName: "clusterName" 
      Configuration:
        ManagedStorageConfiguration:
          FargateEphemeralStorageKmsKeyId: "arn:aws:kms:us-west-2:012345678901:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
```

------

# Gestion des AWS KMS clés pour le stockage éphémère Fargate pour Amazon ECS
<a name="fargate-managing-kms-key"></a>

Après avoir créé ou importé votre AWS KMS clé pour chiffrer votre stockage éphémère Fargate, vous le gérez de la même manière que n'importe quelle autre clé. AWS KMS 

**Rotation automatique des AWS KMS touches**  
Vous pouvez activer la rotation automatique des clés ou les faire pivoter manuellement. La rotation automatique des clés fait pivoter la clé pour vous chaque année en générant du nouveau matériel cryptographique pour la clé. AWS KMS enregistre également toutes les versions précédentes du matériel cryptographique, de sorte que vous serez en mesure de déchiffrer toutes les données qui utilisaient les versions de clé antérieures. Aucun matériau pivoté ne sera supprimé AWS KMS tant que vous n'aurez pas supprimé la clé.

La rotation automatique des clés est facultative et peut être activée ou désactivée à tout moment.

**Désactivation ou révocation des clés AWS KMS**  
Si vous désactivez une clé d'entrée gérée par le client AWS KMS, cela n'a aucun impact sur l'exécution des tâches et celles-ci continuent de fonctionner tout au long de leur cycle de vie. Si une nouvelle tâche utilise la clé désactivée ou révoquée, elle échoue, car elle ne peut pas accéder à la clé. Vous devez définir une CloudWatch alarme ou une alarme similaire pour vous assurer qu'une clé désactivée ne soit jamais nécessaire pour déchiffrer des données déjà chiffrées.

**Supprimer des AWS KMS clés**  
La suppression de clés doit toujours être envisagée en dernier recours et ne doit être effectuée que si vous êtes certain que la clé supprimée ne sera plus jamais nécessaire. Les nouvelles tâches qui tentent d'utiliser la clé supprimée échoueront car elles ne pourront pas y accéder. AWS KMS conseille de désactiver une clé au lieu de la supprimer. Si vous pensez qu'il est nécessaire de supprimer une clé, nous vous suggérons de la désactiver d'abord et de configurer une CloudWatch alarme pour vous assurer qu'elle n'est pas nécessaire. Si vous supprimez une clé, vous AWS KMS disposez d'au moins sept jours pour changer d'avis.

**Audit de l'accès aux AWS KMS clés**  
Vous pouvez utiliser CloudTrail les journaux pour vérifier l'accès à votre AWS KMS clé. Vous pouvez vérifier les AWS KMS opérations `CreateGrant``GenerateDataKeyWithoutPlaintext`, et`Decrypt`. Ces opérations affichent également le `aws:ecs:clusterAccount` et dans le `aws:ecs:clusterName` cadre de `EncryptionContext` la connexion CloudTrail.

Voici des exemples d' CloudTrail événements pour`GenerateDataKeyWithoutPlaintext`,`GenerateDataKeyWithoutPlaintext (DryRun)`, `CreateGrant``CreateGrant (DryRun)`, et `RetireGrant` (remplacez les *red* valeurs par les vôtres).

------
#### [ GenerateDataKeyWithoutPlaintext ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "ec2-frontend-api.amazonaws.com"
    },
    "eventTime": "2024-04-23T18:08:13Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKeyWithoutPlaintext",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "ec2-frontend-api.amazonaws.com",
    "userAgent": "ec2-frontend-api.amazonaws.com",
    "requestParameters": {
        "numberOfBytes": 64,
        "keyId": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "encryptionContext": {
            "aws:ecs:clusterAccount": "account-id",
            "aws:ebs:id": "vol-xxxxxxx",
            "aws:ecs:clusterName": "cluster-name"
        }
    },
    "responseElements": null,
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "account-id",
    "sharedEventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventCategory": "Management"
}
```

------
#### [ GenerateDataKeyWithoutPlaintext (DryRun) ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "fargate.amazonaws.com"
    },
    "eventTime": "2024-04-23T18:08:11Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKeyWithoutPlaintext",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "fargate.amazonaws.com",
    "userAgent": "fargate.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "dryRun": true,
        "numberOfBytes": 64,
        "encryptionContext": {
            "aws:ecs:clusterAccount": "account-id",
            "aws:ecs:clusterName": "cluster-name"
        }
    },
    "responseElements": null,
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
    "readOnly": true,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "account-id",
    "sharedEventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventCategory": "Management"
}
```

------
#### [ CreateGrant ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "ec2-frontend-api.amazonaws.com"
    },
    "eventTime": "2024-04-23T18:08:13Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "ec2-frontend-api.amazonaws.com",
    "userAgent": "ec2-frontend-api.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "granteePrincipal": "fargate.us-west-2.amazonaws.com",
        "operations": [
            "Decrypt"
        ],
        "constraints": {
            "encryptionContextSubset": {
                "aws:ecs:clusterAccount": "account-id",
                "aws:ebs:id": "vol-xxxx",
                "aws:ecs:clusterName": "cluster-name"
            }
        },
        "retiringPrincipal": "ec2.us-west-2.amazonaws.com"
    },
    "responseElements": {
        "grantId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "keyId": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
    "readOnly": false,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "account-id",
    "sharedEventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventCategory": "Management"
}
```

------
#### [ CreateGrant (DryRun) ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "fargate.amazonaws.com"
    },
    "eventTime": "2024-04-23T18:08:11Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "CreateGrant",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "fargate.amazonaws.com",
    "userAgent": "fargate.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
        "granteePrincipal": "fargate.us-west-2.amazonaws.com",
        "dryRun": true,
        "operations": [
            "Decrypt"
        ],
        "constraints": {
            "encryptionContextSubset": {
                "aws:ecs:clusterAccount": "account-id",
                "aws:ecs:clusterName": "cluster-name"
            }
        }
    },
    "responseElements": null,
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
    "readOnly": false,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "account-id",
    "sharedEventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventCategory": "Management"
}
```

------
#### [ RetireGrant ]

```
{
    "eventVersion": "1.08",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "AWS Internal"
    },
    "eventTime": "2024-04-20T18:37:38Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "RetireGrant",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "AWS Internal",
    "userAgent": "AWS Internal",
    "requestParameters": null,
    "responseElements": {
        "keyId": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
    },
    "additionalEventData": {
        "grantId": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE22222",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLE33333",
    "readOnly": false,
    "resources": [
        {
            "accountId": "AWS Internal",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-west-2:account-id:key/a1b2c3d4-5678-90ab-cdef-EXAMPLE11111"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "account-id",
    "sharedEventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventCategory": "Management"
}
```

------