Compartilhar:

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.

Tópicos

 

Instalação e configuração AWS CLI

 
Para instalação do AWS CLI de acordo com o seu sistema operacional siga os passos da documentação da própria AWS: acesse aqui.

Após instalar o AWS CLI, execute ‘aws configure’ e insira as credenciais do usuário da conta AWS.

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 36

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.”

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 37

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:

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 38

Escolha o nome da AMI e selecione o disco:

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 39

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.

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 40

 

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”:

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 41

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:

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 42

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
Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 43

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:

Servidor Dedicado no Melhor Data Center
Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox 44

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:

Servidor Dedicado no Melhor Data Center

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

Servidor Dedicado no Melhor Data Center

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

Servidor Dedicado no Melhor Data Center

Por fim, inicie a VM e valide:

Servidor Dedicado no Melhor Data Center

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.