Skip to content

    Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox

    Guia: Exportação de AMI da AWS para RAW/VMDK, Armazenamento no S3 e Importação no Proxmox

    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.

    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 root@10.10.100.76:/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.

     

    Blog comments