Pourquoi le nouveau volume Amazon EBS que j'ai créé à partir d'un instantané chiffré n'existe-t-il pas ?

Dernière mise à jour : 10/02/2021

J'ai créé un volume Amazon Elastic Block Store (Amazon EBS) à partir d'un instantané chiffré par le biais de l'interface de ligne de commande AWS (AWS CLI), via la commande create-volume. La commande s'exécute avec succès et renvoie un ID de volume. Lorsque j'essaie d'attacher le volume à une instance, le volume est introuvable. Pourquoi le nouveau volume EBS que j'ai créé à partir d'un instantané chiffré n'existe-t-il pas ?

Brève description

Lorsque vous créez un volume Amazon EBS à partir d'un instantané, deux opérations s'exécutent :

  1. Tout d'abord, Amazon EBS lance la création du volume. Un ID de volume est renvoyé et l'état du volume est défini sur Creating (Création) (comme renvoyé dans la sortie de l'AWS CLI/API). Cela signifie que l'API CreateVolume est valide et enregistrée avec succès.
  2. Ensuite, un appel asynchrone est initié afin de valider la clé KMS utilisée pour chiffrer et déchiffrer le volume que vous créez.

Si la validation KMS réussit, l'état du volume est défini sur Available (Disponible) et le volume EBS devient accessible. Toutefois, si l'ID de la clé KMS, l'alias ou l'ARN spécifié ne sont pas valides, l'action peut apparaître comme étant terminée, mais échoue sans qu'une erreur soit retournée.

Remarque : la validation KMS pour CreateVolume est asynchrone. Pour plus d'informations, consultez create-volume et Chiffrement des ressources EBS.

Vous ne pouvez vous rendre compte du problème qu'en essayant d'attacher ou d'accéder au volume EBS. Vous constatez alors que le volume n'existe pas, malgré que l'API CreateVolume ait renvoyé un ID de volume. De plus, si vous consultez les journaux AWS CloudTrail, aucune erreur n'apparaît.

Exemple de problème

Cet exemple montre l'utilisation de l'API CreateVolume avec un alias non valide pour la clé KMS. L'API CreateVolume réussit et renvoie un ID de volume, puis définit l'état du volume sur Creating (Création). Étant donné que l'alias de la clé KMS n'est pas valide, l'authentification asynchrone échoue. L'ensemble de l'opération échoue. Lorsque vous consultez les journaux AWS CloudTrail inhérents à l'événement de création de volume, aucune erreur n'est détectée, car l'opération CreateVolume a réussi.

$ aws ec2 create-volume --volume-type gp2 --availability-zone eu-west-1c --encrypted --kms-key-id hana --snapshot-id snap-0a27fe340500641d9 
{
    "AvailabilityZone": "eu-west-1c", 
    "MultiAttachEnabled": false, 
    "Tags": [], 
    "Encrypted": true, 
    "VolumeType": "gp2", 
    "VolumeId": "vol-043fe27d0ccf74b36", 
    "State": "creating", 
    "KmsKeyId": "hana", 
    "SnapshotId": "snap-0a27fe340500641d9", 
    "Iops": 100, 
    "CreateTime": "2020-10-06T18:03:09.000Z", 
    "Size": 8
}

Journaux AWS CloudTrail :

responseElements": {
        "requestId": "8677d3cd-ad1d-4866-95f5-375d92a35813",
        "volumeId": "vol-043fe27d0ccf74b36",
        "size": "8",
        "snapshotId": "snap-0a27fe340500641d9",
        "zone": "eu-west-1c",
        "status": "creating",
        "createTime": 1602007389000,
        "volumeType": "gp2",
        "iops": 100,
        "encrypted": true,
        "masterEncryptionKeyId": "hana",
        "tagSet": {},
        "multiAttachEnabled": false
    },
    "requestID": "8677d3cd-ad1d-4866-95f5-375d92a35813",
    "eventID": "bd4216df-ba39-425e-b272-936212ae6699",
    "eventType": "AwsApiCall",
    "recipientAccountId": "864258534754"
}

Lorsque vous exécutez describe-volume-status, vous constatez que le volume n'existe pas :

$ aws ec2 describe-volume-status --volume-ids vol-043fe27d0ccf74b36
An error occurred (InvalidVolume.NotFound) when calling the DescribeVolumeStatus operation: 
The volume 'vol-043fe27d0ccf74b36' does not exist.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution des commandes de l'AWS CLI, assurez-vous d'utiliser la version la plus récente de l'AWS CLI.

Utiliser l'API describe-volume-status

Utilisez l'API describe-volume-status afin de vérifier si le volume EBS existe.

S'abonner aux événements CreateVolume de CloudWatch

Abonnez-vous aux événements publics CreateVolume de CloudWatch pour plus d'informations sur l'échec de création de volume. Il s'agit d'un exemple de notification que vous pouvez recevoir. Il vous informe de l'événement CreateVolume de CloudWatch. La notification vous fournit plus d'informations sur l'événement, et vous pouvez constater que le résultat CreateVolume a échoué en raison d'un ID de clé non valide.

AWS Notification Message
CreateVolume <no-reply@sns.amazonaws.com>
{
"version":"0","id":"192e695f-2387-1cf0-fb1c-1cb32f047212",
"detail-type":"EBS Volume Notification","source":"aws.ec2",
"account":"12345678","time":"2020-10-06T18:03:10Z",
"region":"eu-west-1",
"resources":["arn:aws:ec2:eu-west-1:864258534754:volume/vol-043fe27d0ccf74b36"],
"detail":
{"result":"failed","cause":"Invalid keyId hana","event":"createVolume",
"request-id":"8677d3cd-ad1d-4866-95f5-375d92a35813"}
}
Remarque : si vous créez un volume EBS à partir d'un instantané chiffré, il peut également échouer pour les raisons suivantes :

  • L'utilisateur/le rôle AWS Identity and Access Management (IAM) qui crée le volume ne dispose pas d'autorisations suffisantes afin d'accéder à la clé KMS utilisée pour chiffrer l'instantané.
  • La clé KMS utilisée pour chiffrer l'instantané a été désactivée, supprimée ou ne se trouve pas dans la région.