Como usar o VM Import/Export para exportar uma VM com base na minha imagem de máquina da Amazon (AMI)?

5 minuto de leitura
0

Quero exportar uma cópia da minha imagem de máquina da Amazon (AMI) como uma máquina virtual (VM) para implantar em meu ambiente de virtualização local. Como faço para usar o VM Import/Export para fazer isso?

Breve descrição

Você pode usar a AWS Command Line Interface (AWS CLI) para iniciar uma tarefa de exportação de imagens usando o VM Import/Export. Em seguida, uma cópia da sua imagem de máquina da Amazon (AMI) é exportada como um arquivo de VM e gravada em um bucket do Amazon Simple Storage Service (Amazon S3). Você pode usar a VM exportada para implantar uma nova instância padronizada em seu ambiente de virtualização local. Você pode exportar a maioria das AMIs para Citrix Xen, Microsoft Hyper-V ou VMware vSphere.

Observação: Se você receber erros ao executar comandos da AWS CLI, verifique se está usando a versão mais recente da AWS CLI.

Antes de iniciar as etapas de resolução a seguir, faça o seguinte:

Resolução

1.    Crie uma AMI com suporte do Amazon Elastic Block Store (Amazon EBS) a partir da instância do EC2 que você deseja exportar.

Para Linux, consulte Create an Amazon EBS-backed Linux AMI (Criar uma AMI do Linux com suporte do Amazon EBS).

Para Windows, consulte Create a custom Windows AMI (Criar uma AMI personalizada do Windows).

2.    Instale a AWS CLI em uma máquina cliente e configure-a com as credenciais da AWS geradas para seu usuário do IAM.

3.    Crie um novo bucket do S3 na mesma região da AWS da AMI que você planeja exportar.

4.     Crie o perfil de serviço necessário. Como pré-requisito, certifique-se de habilitar o AWS Security Token Service (AWS STS) na região em que você está usando o VM Import/Export.

Para criar o perfil de serviço, primeiro crie um arquivo chamado trust-policy.json no seu computador e, em seguida, adicione a seguinte política ao arquivo:

{
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Allow",
         "Principal": { "Service": "vmie.amazonaws.com" },
         "Action": "sts:AssumeRole",
         "Condition": {
            "StringEquals":{
               "sts:Externalid": "vmimport"
            }
         }
      }
   ]
}

Execute o comando create-role para criar um perfil chamado vmimport usando o arquivo trust-policy.json para conceder ao VM Import/Export acesso ao perfil:

aws iam create-role --role-name vmimport --assume-role-policy-document "file://C:\import\trust-policy.json"

Observação: no exemplo anterior, certifique-se de especificar o caminho completo para o local do arquivo trust-policy.json que você criou. Certifique-se de incluir o prefixo file://.

Crie outro arquivo chamado role-policy.json no seu computador e adicione a política a seguir ao arquivo. Substitua my-export-bucket pelo nome do seu bucket do S3.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetBucketLocation",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject",
                "s3:GetBucketAcl"
            ],
            "Resource": [
                "arn:aws:s3:::my-export-bucket",
                "arn:aws:s3:::my-export-bucket/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ModifySnapshotAttribute",
                "ec2:CopySnapshot",
                "ec2:RegisterImage",
                "ec2:Describe*"
            ],
            "Resource": "*"
        }
    ]
}

Use o comando put-role-policy para anexar a política role-policy.json ao perfil vmimport que você criou anteriormente:

aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document "file://C:\import\role-policy.json"

No exemplo anterior, não se esqueça de especificar o caminho completo para o local do arquivo role-policy.json.

Observação: atualizações futuras do VM Import/Export podem exigir permissões adicionais no perfil vmimport. Consulte o exemplo de política na documentação do perfil de serviço necessário para ver o exemplo mais atualizado das permissões necessárias.

5.    Na máquina cliente em que você instalou a AWS CLI, execute o comando da AWS CLI export-image para iniciar a tarefa de exportação da imagem:

aws ec2 export-image --image-id ami-id --disk-image-format VMDK --s3-export-location S3Bucket=my-export-bucket,S3Prefix=exports/

Observação: no exemplo anterior, substitua ami-id pelo seu ID da AMI. Escolha o formato de imagem de disco desejado (VMDK, RAW ou VHD). Substitua my-export-bucket pelo nome do seu bucket do S3. O arquivo exportado é gravado no bucket do S3 especificado usando a chave do S3 prefixexport-ami-id.format (por exemplo, my-export-bucket/exports/export-ami-1234567890abcdef0.vmdk). Você pode adicionar um prefixo ao arquivo exportado.

Se a solicitação for bem-sucedida, a saída do comando export-image retornará detalhes sobre a tarefa, incluindo um ID da tarefa de exportação de imagem, conforme mostrado no exemplo a seguir:

{
    "DiskImageFormat": "vmdk",
    "ExportImageTaskId": "export-ami-1234567890abcdef0"
    "ImageId": "ami-1234567890abcdef1",
    "RoleName": "vmimport",
    "Progress": "0",
    "S3ExportLocation": {
        "S3Bucket": "my-export-bucket",
        "S3Prefix": "exports/"
    },
    "Status": "active",
    "StatusMessage": "validating"
}

6.    Para verificar o status da sua tarefa de exportação de imagem, execute o comando da AWS CLI describe-export-image-tasks.

Exemplo

aws ec2 describe-export-image-tasks --export-image-task-id export-ami-id

Observação: no exemplo anterior, substitua export-ami-id pelo ID da tarefa de exportação de imagem da saída do comando export-image.

A saída do comando describe-export-image-tasks retorna detalhes sobre o progresso e o status geral da tarefa. O exemplo de saída a seguir é de uma tarefa de exportação de imagem que está em um status ativo e em andamento:

{
    "ExportImageTasks": [
        {
            "ExportImageTaskId": "export-ami-1234567890abcdef0"
            "Progress": "21",
            "S3ExportLocation": {
                "S3Bucket": "my-export-bucket",
                "S3Prefix": "exports/"
            },
            "Status": "active",
            "StatusMessage": "updating"
        }
    ]
}

7.    Quando o status da sua tarefa de exportação de imagem muda para “concluído”, o arquivo exportado fica pronto em seu bucket do S3 como um objeto. O exemplo de saída a seguir mostra uma tarefa de exportação de imagem concluída. O arquivo exportado resultante no Amazon S3 é my-export-bucket/exports/export-ami-1234567890abcdef0.vmdk.

{
    "ExportImageTasks": [
        {
            "ExportImageTaskId": "export-ami-1234567890abcdef0"
            "S3ExportLocation": {
                "S3Bucket": "my-export-bucket",
                "S3Prefix": "exports/"
            },
            "Status": "completed"
        }
    ]
}

8.    Acesse seu bucket do S3 usando o console do Amazon S3 para localizar e fazer download do objeto.


Informações relacionadas

Exportar de uma AMI

Como criar um usuário do IAM em sua conta da AWS

Acesso programático (ID da chave de acesso e chave de acesso secreta)

Imagens de máquina da Amazon (AMI)

Solução de problemas do VM Import/Export

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos