Ir para o conteúdo

Como soluciono erros ao copiar AMIs entre diferentes regiões ou contas?

4 minuto de leitura
0

Quero copiar uma imagem de máquina da Amazon (AMI) de uma região ou conta da AWS para outra região ou conta. No entanto, recebo mensagens de erro na minha instância do Amazon Elastic Compute Cloud (Amazon EC2).

Resolução

Para copiar uma AMI entre regiões, configure as permissões da AMI e seus componentes, como snapshots e chaves de criptografia do AWS Key Management Service (AWS KMS).

Solucione erros de permissões

Permissões do IAM ausentes

Se seu usuário ou o perfil do AWS Identity and Access Management (AWS IAM) não tiver as permissões de cópia necessárias da AMI, você recebe a seguinte mensagem de erro:

"You are not authorized to perform this operation"

Para solucionar esse problema, certifique-se de que sua entidade do IAM tenha as permissões necessárias.

Permissões ausentes para acesso ao armazenamento da AMI

Se você copiar uma AMI compartilhada e a conta de destino não tiver acesso aos snapshots associados, você recebe a seguinte mensagem de erro:

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

Para resolver esse problema com uma AMI que não seja do AWS Marketplace, conclua as seguintes etapas:

  1. Para compartilhar a AMI de origem, clique em Editar permissões da AMI.
  2. Selecione Adicionar permissão de "Criar volume" aos snapshots associados ao criar permissões da conta.
  3. Compartilhe a AMI de origem com a conta de destino.
    Observação: se você já compartilhou a AMI, exclua e compartilhe novamente a AMI da conta de origem para o destino com a permissão Criar volume selecionada.

Para resolver esse problema com uma AMI do AWS Marketplace, você deve usar a AMI para executar uma instância. Em seguida, crie uma nova AMI a partir da instância. Não é possível copiar diretamente as AMIs do AWS Marketplace entre contas.

Solucione problemas de AMI criptografada e chave do AWS KMS

Em AMIs criptografadas, a conta de destino deve acessar a chave de origem do AWS KMS para descriptografia durante o processo de cópia. A conta de destino também deve usar a mesma chave ou ter uma chave correspondente na região de destino.

Para configurar permissões para AMIs criptografadas, conceda à conta de destino acesso à chave do AWS KMS e, em seguida, crie uma política do IAM para acesso à chave.

Dê acesso à chave à conta de destino

Para gerenciar AMIs criptografadas, conclua as seguintes etapas na conta de origem:

  1. Abra o console do AWS KMS.
  2. No painel de navegação, selecione Chaves gerenciadas pelo cliente.
  3. Selecione a chave do AWS KMS que você usou para criptografar a AMI.
  4. Em Política de chave, em Visualização padrão, clique em Adicionar outras contas da AWS.
  5. Insira o ID da conta de destino.
  6. Clique em Salvar alterações.
  7. Em Visualização da política, selecione Editar.
  8. Insira a seguinte política de acesso:
            {
              "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}}
            }
    Observação: substitua SOURCE_ACCOUNT_ID pelo ID da sua conta de origem e DESTINATION_ACCOUNT_ID pelo ID da sua conta de destino.

Crie uma política do IAM para que a conta de destino tenha acesso à chave

Crie uma política do IAM na conta de destino.

Exemplo de política:

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

Observação: substitua KEY_ARN pelo nome do recurso da Amazon (ARN) da sua chave do AWS KMS.

Em seguida, anexe a política aos usuários ou perfis do IAM que precisam trabalhar com a AMI criptografada.

Informações relacionadas

Compartilhar a chave do KMS usada para criptografar um snapshot compartilhado do Amazon EBS

Por que não consigo executar instâncias do EC2 a partir da minha AMI copiada?

AWS OFICIALAtualizada há 7 meses