Salta al contenuto

Come posso risolvere gli errori che ricevo quando copio AMI tra Regioni o account diversi?

4 minuti di lettura
0

Desidero copiare un'Amazon Machine Image (AMI) da una Regione AWS o un account AWS a una Regione o un account diverso. Tuttavia, ricevo errori nella mia istanza Amazon Elastic Compute Cloud (Amazon EC2).

Risoluzione

Per copiare un'AMI tra Regioni, configura le autorizzazioni per l'AMI e i suoi componenti, come snapshot e chiavi di crittografia del Servizio AWS di gestione delle chiavi (AWS KMS).

Risolvi gli errori relativi alle autorizzazioni

Autorizzazioni IAM mancanti

Se l'utente o il ruolo AWS Identity and Access Management (AWS IAM) non dispone delle autorizzazioni necessarie per copiare l'AMI, potresti ricevere il seguente errore:

"You are not authorized to perform this operation"

Per risolvere il problema, assicurati che l'entità IAM abbia le autorizzazioni richieste.

Autorizzazioni mancanti per l'accesso allo storage dell'AMI

Se copi un'AMI condivisa e l'account di destinazione non ha accesso agli snapshot associati, potresti ricevere il seguente errore:

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

Per risolvere il problema, completa i seguenti passaggi:

  1. Per condividere l'AMI di origine, scegli Modifica le autorizzazioni AMI.
  2. Seleziona Add 'Create volume' permission to associated snapshots when creating account permissions (Aggiungi l'autorizzazione "Crea volume" agli snapshot associati durante la creazione delle autorizzazioni dell'account).
  3. Condividi l'AMI di origine con l'account di destinazione.
    Nota: se hai già condiviso l'AMI, eliminala e condividila nuovamente dall'account di origine alla destinazione selezionando l'autorizzazione Create volume (Crea volume).

Risolvi gli errori relativi alle chiavi AWS KMS e alle AMI crittografate

Per le AMI crittografate, l'account di destinazione deve accedere alla chiave AWS KMS di origine per decrittografare durante il processo di copia. L'account di destinazione deve inoltre utilizzare la stessa chiave o avere una chiave corrispondente nella Regione di destinazione.

Per configurare le autorizzazioni per le AMI crittografate, concedi all'account di destinazione l'accesso alla chiave KMS, quindi crea una policy IAM per l'accesso alla chiave.

Concedi l'accesso alla chiave all'account di destinazione

Per gestire le AMI crittografate, completa i seguenti passaggi nell'account di origine:

  1. Apri la console AWS KMS.
  2. Nel pannello di navigazione, scegli Chiavi gestite dal cliente.
  3. Seleziona la chiave KMS che hai utilizzato per crittografare l'AMI.
  4. In Policy della chiave, per Visualizzazione predefinita, scegli Aggiungi altri account AWS.
  5. Inserisci l'ID dell'account di destinazione.
  6. Scegli Salva le modifiche.
  7. Per Policy view (Visualizzazione della policy), scegli Modifica.
  8. Inserisci la seguente policy di accesso:
            {
              "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}}
            }
    Nota: sostituisci SOURCE_ACCOUNT_ID con l'ID del tuo account di origine e DESTINATION_ACCOUNT_ID con l'ID del tuo account di destinazione.

Crea una policy IAM per consentire all'account di destinazione di avere accesso alla chiave

Crea una policy IAM nell'account di destinazione.

Esempio di policy:

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

Nota: sostituisci KEY_ARN con il nome della risorsa Amazon (ARN) della tua chiave AWS KMS.

Quindi collega la policy agli utenti o ai ruoli IAM che devono utilizzare l'AMI crittografata.

Informazioni correlate

Condividi la chiave KMS utilizzata per crittografare uno snapshot Amazon EBS condiviso

Perché non posso avviare le istanze EC2 dall’AMI copiata?

AWS UFFICIALEAggiornata 7 mesi fa