Direkt zum Inhalt

Wie behebe ich Fehler, wenn ich AMIs zwischen verschiedenen Regionen oder Konten kopiere?

Lesedauer: 4 Minute
0

Ich möchte ein Amazon Machine Image (AMI) von einer AWS-Region oder einem AWS-Konto in eine andere Region oder ein anderes Konto kopieren. Ich erhalte jedoch Fehler in meiner Amazon Elastic Compute Cloud (Amazon EC2)-Instance.

Lösung

Um ein AMI zwischen Regionen zu kopieren, konfiguriere die Berechtigungen für das AMI und seine Komponenten, wie Snapshots und AWS Key Management Service (AWS KMS)-Verschlüsselungsschlüssel.

Beheben von Berechtigungsfehlern

Fehlende IAM-Berechtigungen

Wenn der/die AWS Identity and Access Management (IAM)-Benutzer:in oder die IAM-Rolle nicht über die erforderlichen AMI-Kopierberechtigungen verfügt, erhältst du die folgende Fehlermeldung:

„You are not authorized to perform this operation“

Um dieses Problem zu beheben, stelle sicher, dass die IAM-Entität über die erforderlichen Berechtigungen verfügt.

Fehlende Berechtigungen für den AMI-Speicherzugriff

Wenn du ein gemeinsam genutztes AMI kopierst und das Zielkonto keinen Zugriff auf die zugehörigen Snapshots hat, wird die folgende Fehlermeldung angezeigt:

„You do not have permission to access the storage of this AMI“

Gehe wie folgt vor, um dieses Problem für ein AMI zu lösen, das nicht aus dem AWS Marketplace stammt:

  1. Um das Quell-AMI zu teilen, wähle AMI-Berechtigungen bearbeiten.
  2. Wähle Add Create volume' permission to associated snapshots when creating account permissions (Beim Erstellen von Kontoberechtigungen die Berechtigung „Volume erstellen“ zu verknüpften Snapshots hinzufügen) aus.
  3. Teile das Quell-AMI mit dem Zielkonto.
    Hinweis: Wenn du das AMI bereits geteilt hast, lösche das AMI und gib es erneut vom Quellkonto für das Ziel frei, wobei die Berechtigung Volume erstellen ausgewählt ist.

Um dieses Problem für ein AWS-Marketplace-AMI zu lösen, musst du das AMI verwenden, um eine Instance zu starten. Erstelle anschließend ein neues AMI aus der Instance. Du kannst AWS-Marketplace-AMIs nicht direkt kontoübergreifend kopieren.

Beheben von Problemen mit verschlüsselten AMIs und AWS-KMS-Schlüsseln

Bei verschlüsselten AMIs muss das Zielkonto während des Kopiervorgangs auf den AWS-KMS-Quellschlüssel zugreifen, um ihn zu entschlüsseln. Das Zielkonto muss ebenfalls denselben Schlüssel verwenden oder einen passenden Schlüssel in der Zielregion haben.

Um Berechtigungen für verschlüsselte AMIs zu konfigurieren, gewähre dem Zielkonto Zugriff auf den AWS-KMS-Schlüssel und erstelle dann eine IAM-Richtlinie für den Schlüsselzugriff.

Dem Zielkonto Zugriff auf den Schlüssel geben

Um verschlüsselte AMIs zu verwalten, führe die folgenden Schritte im Quellkonto aus:

  1. Öffne die AWS-KMS-Konsole.
  2. Wähle im Navigationsbereich Kundenverwalteter Schlüssel aus.
  3. Wähle den AWS-KMS-Schlüssel aus, den du zum Verschlüsseln des AMI verwendet hast.
  4. Wähle unter Schlüsselrichtlinie für Default view (Standardansicht) die Option Andere AWS-Konten hinzufügen aus.
  5. Gib die Zielkonto-ID ein.
  6. Wähle Änderungen speichern.
  7. Wähle in der Policy view (Richtlinienansicht) Bearbeiten aus.
  8. Gib die folgende Zugriffsrichtlinie ein:
            {
              "Sid": "Allow use of the key",
              "Effect": "Allow",
              "Principal": {"AWS": [
                "arn:aws:iam::[SOURCE_ACCOUNT_ID]:user/KeyUser",
                "arn:aws:iam::[TARGET_ACCOUNT_ID]:root"
              ]},
              "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*",
                "kms:DescribeKey"
              ],
             "Resource": "*"
            },
            {
              "Sid": "Allow attachment of persistent resources",
              "Effect": "Allow",
              "Principal": {"AWS": [
                "arn:aws:iam::SOURCE_ACCOUNT_ID:user/KeyUser",
                "arn:aws:iam::DESTINATION_ACCOUNT_ID:root"  
              ]},
              "Action": [
                "kms:CreateGrant",
                "kms:ListGrants",
                "kms:RevokeGrant"
              ],
              "Resource": "*",
              "Condition": {"Bool": {"kms:GrantIsForAWSResource": true}}
            }
    Hinweis: Ersetze SOURCE_ACCOUNT_ID durch deine Quellkonto-ID und DESTINATION_ACCOUNT_ID durch deine Zielkonto-ID.

Eine IAM-Richtlinie erstellen, damit das Zielkonto Schlüsselzugriff hat

Erstelle eine IAM-Richtlinie im Zielkonto.

Beispiel für eine Richtlinie:

      {
          "Version": "2012-10-17",
          "Statement": [{
           "Sid": "AllowUseOfTheKey",
           "Effect": "Allow",
           "Action": ["kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey"],
           "Resource": ["KEY_ARN"]
      }, {
           "Sid": "AllowAttachmentOfPersistentResources",
           "Effect": "Allow",
           "Action": ["kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant"],
           "Resource": ["KEY_ARN"],
           "Condition": {
               "Bool": {
                   "kms:GrantIsForAWSResource": true
              }
           }
       }]
   }

Hinweis: Ersetze KEY_ARN durch den Amazon-Ressourcennamen (ARN) deines AWS-KMS-Schlüssels.

Füge dann die Richtlinie an die IAM-Benutzer oder IAM-Rollen an, die mit dem verschlüsselten AMI arbeiten müssen.

Ähnliche Informationen

Teilen des KMS-Schlüssels, der zum Verschlüsseln eines gemeinsam genutzten Amazon-EBS-Snapshots verwendet wird

Warum kann ich EC2-Instances nicht von meinem kopierten AMI aus starten?

AWS OFFICIALAktualisiert vor 3 Monaten