Este guia apresenta o passo a passo para exportar uma AMI da AWS nos formatos RAM/VMDK e armazená-la no S3, permitindo sua utilização em virtualizadores como Proxmox e VMware.
Instalação e configuração AWS CLI
Após instalar o AWS CLI, execute ‘aws configure’ e insira as credenciais do usuário da conta AWS.

Políticas de acesso e exportação
As políticas de acesso e exportação devem ser exatamente conforme informadas abaixo (altere apenas o nome do bucket):
s3-allow-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"arn:aws:s3:::mys3bucket",
"arn:aws:s3:::mys3bucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:CancelConversionTask",
"ec2:CancelExportTask",
"ec2:CreateImage",
"ec2:CreateInstanceExportTask",
"ec2:CreateTags",
"ec2:DescribeConversionTasks",
"ec2:DescribeExportTasks",
"ec2:DescribeExportImageTasks",
"ec2:DescribeImages",
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"ec2:DescribeSnapshots",
"ec2:DescribeTags",
"ec2:ExportImage",
"ec2:ImportInstance",
"ec2:ImportVolume",
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:TerminateInstances",
"ec2:ImportImage",
"ec2:ImportSnapshot",
"ec2:DescribeImportImageTasks",
"ec2:DescribeImportSnapshotTasks",
"ec2:CancelImportTask"
],
"Resource": "*"
}
]
}
iam-create-policy
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"iam:CreateRole",
"iam:PutRolePolicy"
],
"Resource": "*"
}
]
}
Para criar as políticas, acesse: AWS > IAM > Policies > Create Policy.”

Adicione o nome da política na próxima página e salve. Faça isso para as duas políticas informadas.
Criação da imagem da máquina virtual
Para a criação da AMI, você deve selecionar a VM desejada, clicar em “Actions” > “Image and templates” > Criate Image:

Escolha o nome da AMI e selecione o disco:

O procedimento de criação de AMI pode levar alguns minutos, levando em consideração o tamanho do volume. Ao ser finalizada a criação, a AMI ficará disponível na página de AMIs da AWS.

Criação Bucket S3
Crie o bucket S3 na mesma região da máquina virtual, habilitando a ACL com a opção “Object Ownership Bucket owner preferred”:

Utilizando o AWS CLI, você deve criar a regra e política para conversão de AMI para VMDK:
vi trust-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "Service": "vmie.amazonaws.com" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals":{
"sts:Externalid": "vmimport"
}
}
}
]
}
Use o seguinte comando para criar a regra “vm-import”:
aws iam create-role — role-name vmimport — assume-role-policy-document “file://trust-policy.json”
Ajuste o path utilizando o caminho onde o arquivo foi criado.
Anexe a política à função “vm-import” para realizar a conversão de AMI para VMDK. Altere o nome do bucket para o seu bucket criado na AWS.
vi role-policy.json
{
"Version":"2012-10-17",
"Statement":[
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::<BUCKET_NAME>",
"arn:aws:s3:::<BUCKET_NAME>/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:GetBucketAcl"
],
"Resource": [
"arn:aws:s3:::<BUCKET_NAME>",
"arn:aws:s3:::<BUCKET_NAME>/*"
]
},
{
"Effect": "Allow",
"Action": [
"ec2:ModifySnapshotAttribute",
"ec2:CopySnapshot",
"ec2:RegisterImage",
"ec2:Describe*"
],
"Resource": "*"
}
]
}
O comando abaixo irá criar a política e atachá-la à regra:
aws iam put-role-policy — role-name vmimport — policy-name vmimport — policy-document “file://role-policy.json”
Exportação AMI para VMDK/RAW
Para converter a AMI para VMDK e armazená-lo no bucket, execute o seguinte comando:
aws ec2 export-image --image-id <ami-id> --disk-image-format VMDK --s3-export-location S3Bucket=<BUCKET_NAME>,S3Prefix=mibra/
Você deve ter o seguinte retorno:

Para acompanhar o status, você pode usar o ExportImageTaskID, com o seguinte comando:
aws ec2 describe-export-image-tasks --export-image-task-ids export-ami-b52301ba375feb34t

O tempo do procedimento será de acordo com o tamanho do volume atachado à máquina virtual.
Também é possível exportar a AMI com o formato “raw”, basta ajustar o comando:
aws ec2 export-image --image-id ami-0266eb779c7ef7675 --disk-image-format raw --s3-export-location S3Bucket=aws-hdbr,S3Prefix=migra-hdbr/
Após o procedimento ser finalizado, o VMDK/raw estará disponível em seu bucket:

Agora você pode importar o arquivo para um virtualizador externo, como VMware e Proxmox.
Migração de AMI da AWS para o Proxmox
Após baixar o arquivo .raw do bucket, conforme instruções acima, você precisa enviar o arquivo ao Proxmox. Neste exemplo estamos utilizando o SCP do Linux:
scp export-ami-9e6582c1f545ce26t.raw [email protected]:/dev/FlashStorage-LUN/
É necessário que a VM já esteja criada no seu node Proxmox para os passos futuros.
Após a criação da VM e a transferência do arquivo para o Proxmox, você irá executar o comando para importação do disco à VM:
qm disk import 103 /dev/FlashStorage-LUN/export-ami-9e6582c1f545ce26t.raw Clone-Node-Interno --format raw
Você deverá ter o seguinte retorno:
root@lab2:~# qm disk import 103 /dev/FlashStorage-LUN/export-ami-9e6582c1f545ce26t.raw Clone-Node-Interno --format raw
importing disk '/dev/FlashStorage-LUN/export-ami-9e6582c1f545ce26t.raw' to VM 103 ...
Logical volume "vm-103-disk-0" created.
transferred 0.0 B of 8.0 GiB (0.00%)
transferred 81.9 MiB of 8.0 GiB (1.00%)
transferred 820.0 MiB of 8.0 GiB (10.01%)
transferred 3.2 GiB of 8.0 GiB (40.04%)
transferred 7.9 GiB of 8.0 GiB (99.10%)
transferred 8.0 GiB of 8.0 GiB (100.00%)
transferred 8.0 GiB of 8.0 GiB (100.00%)
unused0: successfully imported disk 'Clone-Node-Interno:vm-103-disk-0'
Posteriormente o disco ficará disponível na página de hardware da VM, mas estará desatachado:

Para atachar o disco, basta selecioná-lo > Edit > Add:

Após atachar será necessário ajustar a ordem de boot, habilitando o disco e configurando como primeira opção de boot:

Por fim, inicie a VM e valide:

O exemplo acima foi realizado em um virtualizador Proxmox, mas com o arquivo VMDK ou RAW, você pode realizar a importação em vários virtualizadores, como VMware.
Conclusão
Ao seguir este guia, você aprendeu a exportar uma Amazon Machine Image (AMI) para os formatos RAW ou VMDK e armazená-la no Amazon S3.
Esse processo é fundamental para ampliar a portabilidade e a flexibilidade de suas máquinas virtuais, permitindo a migração eficiente entre diferentes ambientes de virtualização. Além disso, ao manter suas imagens no S3, você assegura um armazenamento seguro e de fácil acesso para futuras implementações.
Para aprofundar seus conhecimentos e explorar mais soluções relacionadas à infraestrutura de TI e virtualização, convidamos você a explorar os serviços da HostDime Brasil.
Nossa expertise em servidores dedicados, cloud computing e soluções de data center pode auxiliar sua empresa a alcançar uma operação mais robusta e eficiente.
Neste artigo você verá: