Perché il nuovo volume Amazon EBS che ho creato da uno snapshot crittografato non esiste?

4 minuti di lettura
0

Ho usato il comando create volume dell’interfaccia della linea di comando AWS (AWS CLI) per creare un volume Amazon Elastic Block Store (Amazon EBS) da uno snapshot crittografato. Il comando viene completato con successo e restituisce l'ID del volume. Quando provo a collegare il volume a un'istanza, non riesco a trovarlo.

Breve descrizione

Quando crei un volume Amazon EBS da uno snapshot, vengono eseguite due operazioni:

  1. Amazon EBS avvia la creazione del volume. Questo restituisce un ID del volume e imposta lo stato del volume su creating, come riportato nell'output API o AWS CLI. Ciò significa che l'API createVolume è valida e registrata correttamente.
  2. Una chiamata asincrona avvia la convalida della chiave del Sistema AWS di gestione delle chiavi utilizzata per crittografare e decrittografare il volume creato.

Se la convalida AWS KMS ha esito positivo, lo stato del volume viene impostato su disponibile e il volume EBS diventa accessibile. Se l'ID della chiave KMS, l'alias o l'ARN specificati non sono validi, l'azione può apparire come completa. Tuttavia, la creazione del volume alla fine fallisce e non restituisce alcun errore.

Nota: la convalida AWS KMS per createVolume è asincrona. Per ulteriori informazioni, consulta create-volume e Crittografia delle risorse EBS.

Potresti notare il problema quando colleghi o accedi al volume EBS. Sebbene l'API createVolume restituisca un ID volume, il volume EBS non esiste e i log di AWS CloudTrail non mostrano errori.

Esempio del problema

Questo esempio mostra l'API createVolume in uso con un alias non valido per la chiave AWS KMS. L'API createVolume ha esito positivo e restituisce un ID volume, quindi imposta lo stato del volume su creating. Poiché l'alias per la chiave AWS KMS non è valido, l'autenticazione asincrona ha esito negativo. Ciò causa il fallimento dell'intera operazione. Quando controlli i log di AWS CloudTrail per l'evento di creazione del volume, non vengono rilevati errori perché l'operazione createVolume è riuscita.

$ 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
}

Log di AWS CloudTrail:

responseElements": {        "requestId": "8677d3cd-ad1d-4866-95f5-375d92a35813",
        "volumeId": "vol-043fe27d0ccf74b36",
        "size": "8",
        "snapshotId": "snap-0a27fe340500641d9",
        "zone": "eu-west-1c",z
        "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"
}

Quando esegui describe-volume-status, scopri che il volume non esiste:

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

Soluzione

Nota: se ricevi dei messaggi di errore durante l'esecuzione dei comandi AWS CLI, assicurati di utilizzare la versione più recente di AWS CLI.

Usa l'API describe-volume-status

Per controllare se il volume EBS esiste, usa l'API describe-volume-status.

Iscriviti agli eventi createVolume di CloudWatch

Per ottenere ulteriori informazioni sull'errore di creazione del volume, iscriviti agli eventi pubblici di CloudWatch createVolume. In questo esempio, la notifica mostra l'evento createVolume di CloudWatch. La notifica mostra che l’esecuzione di createVolume ha esito negativo a causa di un keyId non valido.

AWS Notification MessageCreateVolume <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"}
}

Nota: se crei un volume EBS da uno snapshot crittografato, la creazione dello snapshot può non riuscire anche per i seguenti motivi:

  • L'utente o il ruolo di AWS Identity and Access Management (IAM) che crea il volume non dispone di autorizzazioni sufficienti. L'utente o il ruolo IAM deve disporre delle autorizzazioni necessarie per accedere alla chiave AWS KMS utilizzata per crittografare lo snapshot.
  • La chiave AWS KMS utilizzata per crittografare lo snapshot è disattivata, eliminata o non è presente nella regione AWS.

Informazioni correlate

How do I optimize the performance of my Amazon EBS volumes?

Perché non riesco a trovare il nome utente che ha creato un volume EBS cercando nei registri degli eventi di CloudTrail?

AWS UFFICIALE
AWS UFFICIALEAggiornata 7 mesi fa