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 erros 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).
Solucionar erros de permissões
Permissões do IAM ausentes
Se seu usuário ou perfil do AWS Identity and Access Management (AWS IAM) não tiver as permissões necessárias para copiar a AMI, você poderá receber o seguinte 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ê poderá receber o seguinte erro:
“You do not have permission to access the storage of this AMI”
Para solucionar esse problema, conclua as etapas a seguir:
- Para compartilhar a AMI de origem, escolha Editar permissões da AMI.
- Selecione Adicionar permissão de “Criar volume” aos snapshots associados ao criar permissões da conta.
- 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.
Solucionar problemas de AMI criptografada e chave do AWS KMS
Para AMIs criptografadas, a conta de destino deve acessar a chave de origem do AWS KMS para decodificação 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 KMS e, em seguida, crie uma política do IAM para acesso à chave.
Dar à conta de destino acesso à chave
Para lidar com AMIs criptografadas, conclua as seguintes etapas na conta de origem:
- Abra o console do AWS KMS.
- No painel de navegação, selecione Chaves gerenciadas pelo cliente.
- Selecione a chave KMS que você usou para criptografar a AMI.
- Em Política de chaves, em Visualização padrão, escolha Adicionar outras contas da AWS.
- Insira o ID da conta de destino.
- Escolha Salvar alterações.
- Em Visualização da política, escolha Editar.
- 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 conta de origem e DESTINATION_ACCOUNT_ID pelo ID da conta de destino.
Criar 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 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?