Warum existiert das neue Amazon-EBS-Volume nicht, das ich aus einem verschlüsselten Snapshot erstellt habe?

Lesedauer: 4 Minute
0

Ich habe mithilfe des Befehls create-volume in AWS Command Line Interface (AWS CLI) ein Amazon Elastic Block Store (Amazon EBS)-Volume aus einem verschlüsselten Snapshot erstellt. Der Befehl wird erfolgreich durchgeführt und ich erhalte eine Volume-ID. Wenn ich versuche, das Volume an eine Instance anzuhängen, finde ich das Volume nicht.

Kurzbeschreibung

Wenn Sie ein Amazon-EBS-Volume aus einem Snapshot erstellen, werden zwei Vorgänge ausgeführt:

  1. Zunächst initiiert Amazon EBS die Volume-Erstellung. Hierdurch wird eine Volume-ID ausgegeben und der Volume-Status auf Erstellen gesetzt, wie in der API- oder AWS-CLI-Ausgabe angezeigt. Dies bedeutet, dass die createVolume-API gültig ist und erfolgreich registriert wurde.
  2. Ein asynchroner Aufruf wird initiiert, um den AWS Key Management Service (AWS KMS)-Schlüssel zu validieren, der zum Ver- und Entschlüsseln des erstellten Volumes verwendet wird.

Wenn die AWS-KMS-Validierung erfolgreich ist, wird der Volume-Status auf verfügbar gesetzt und es kann auf das EBS-Volume zugegriffen werden. Wenn die angegebene AWS KMS-Schlüssel-ID, der Alias oder der ARN nicht gültig sind, scheint die Aktion abgeschlossen zu sein. Die Volume-Erstellung schlägt jedoch letztlich fehl und es werden keine Fehlermeldungen ausgegeben.

**Hinweis:**Die AWS-KMS-Validierung für createVolume erfolgt asynchron. Weitere Informationen finden Sie unter create-Volume und Encrypt Amazon EBS-Ressourcen.

Möglicherweise stoßen Sie auf das Problem, wenn Sie das EBS-Volume anhängen oder darauf zugreifen. Obwohl die createVolume-API eine Volume-ID ausgibt, ist das EBS-Volume nicht vorhanden und die AWS-CloudTrail-Protokolle zeigen keine Fehler an.

Beispiel für das Problem

Dieses Beispiel zeigt die createVolume-API, die mit einem ungültigen Alias für den AWS-KMS-Schlüssel verwendet wird. Die createVolume-API ist erfolgreich, gibt eine Volume-ID aus und setzt dann den Volume-Status auf Erstellen. Da der Alias für den AWS-KMS-Schlüssel nicht gültig ist, schlägt die asynchrone Authentifizierung fehl. Dies führt dazu, dass der gesamte Vorgang fehlschlägt. Wenn Sie in den AWS-CloudTrail-Protokollen nach dem Ereignis der Volume-Erstellung suchen, werden keine Fehler gefunden, da der createVolume-Vorgang erfolgreich war.

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

AWS-CloudTrail-Protokolle:

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

Wenn Sie describe-volume-status ausführen, stellen Sie fest, dass das Volume nicht existiert:

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

Lösung

**Hinweis:**Wenn Sie beim Ausführen von Befehlen in AWS CLI Fehlermeldungen erhalten, stellen Sie sicher, dass Sie die neueste Version von AWS-CLI verwenden.

Verwenden der describe-volume-status-API

Verwenden Sie die API describe-volume-status, um zu überprüfen, ob das EBS-Volume vorhanden ist.

Abonnieren der createVolume-Ereignisse von CloudWatch

Abonnieren Sie die öffentlichen createVolume-Ereignisse in CloudWatch, um weitere Informationen zu Fehlern bei der Volume-Erstellung zu erhalten. In diesem Beispiel zeigt die Benachrichtigung das CloudWatch-Ereignis createVolume. Die Benachrichtigung zeigt, dass das createVolume-Ergebnis aufgrund einer ungültigen keyId fehlschlägt.

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

**Hinweis:**Wenn Sie ein EBS-Volume aus einem verschlüsselten Snapshot erstellen, kann die Snapshot-Erstellung auch aus folgenden Gründen fehlschlagen:

  • Der Benutzer oder die Rolle von AWS Identity and Access Management (IAM), der oder die das Volume erstellt, verfügt nicht über ausreichende Berechtigungen. Der IAM-Benutzer oder die IAM-Rolle muss über Berechtigungen für den Zugriff auf den AWS-KMS-Schlüssel verfügen, der zur Verschlüsselung des Snapshots verwendet wird.
  • Der AWS-KMS-Schlüssel, der zum Verschlüsseln des Snapshots verwendet wird, ist ausgeschaltet oder gelöscht oder befindet sich nicht in der AWS-Region.

Verwandte Informationen

Wie optimiere ich die Leistung meiner Amazon EBS-Volumes?

Warum kann ich den Benutzernamen, der ein EBS-Volume erstellt hat, nicht finden, wenn ich die CloudTrail-Ereignisprotokolle durchsuche?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 7 Monaten