Importar imagens da AWS


Se você tiver imagens do Amazon Machine Images (AMI) ou uma imagem de disco virtual (como VMDK e VHD) armazenadas em um bucket S3 na Amazon Web Services (AWS), use a Google Cloud CLI para importar essas imagens para o Google Cloud.

Se preferir, importe uma imagem seguindo as instruções em Como importar discos de inicialização manualmente.

Para ver a lista completa de opções de importação, consulte Escolher um caminho de migração.

Antes de começar

  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

Visão geral da importação de imagens da AWS

O processo para importar uma imagem da AWS para o Compute Engine é o seguinte:

  1. Na conta da AWS, crie um usuário do IAM que tenha as permissões necessárias para realizar a exportação.

  2. Na sua conta da AWS, defina e visualize as configurações.

  3. Na conta da AWS, usando o usuário do IAM criado na etapa anterior, gere credenciais temporárias que possam ser usadas pela Google Cloud CLI.

  4. No Google Cloud, importe a imagem usando a Google Cloud CLI. A Google Cloud CLI conclui as seguintes etapas:

    • Importa a imagem da AWS para o Compute Engine.
    • Adiciona a imagem à lista de imagens disponíveis no projeto especificado no Compute Engine.

Limitações e restrições

Criar um usuário do AWS IAM

Talvez não seja uma boa prática gerar credenciais usando sua conta de usuário raiz da AWS. Por motivos de segurança, o Google recomenda que você crie um ou mais usuários do IAM e forneça a eles o mínimo de permissões necessárias para exportar um AMI ou um disco virtual da AWS.

As permissões mínimas exigidas para o usuário do IAM dependem do tipo de imagem (AMI ou imagem de disco virtual) que você quer exportar da AWS.

Criar um usuário do IAM da AWS para exportação do AMI

Para criar esse usuário, consulte Criar um usuário do IAM na sua conta da AWS.

Esse usuário precisa ter as seguintes permissões e papéis de serviço obrigatórios:

Criar um usuário do IAM da AWS para exportação de imagens de disco virtual

Para criar esse usuário, consulte Criar um usuário do IAM na sua conta da AWS.

As permissões mínimas exigidas por esse usuário estão descritas na seguinte política do IAM JSON. Substitua IMAGE_FILE_PATH pelo caminho para o arquivo de imagem que você quer importar.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:GetObject"
      ],
      "Resource": ["arn:aws:s3:::IMAGE_FILE_PATH"]
    },
  ]
}

Definir e verificar as definições de configuração

Depois de criar o usuário do IAM, defina e configure o ambiente.

Para definir e verificar as definições de configuração, execute o seguinte comando:

aws configure

Para mais informações sobre esse comando, consulte Definir e visualizar as configurações.

Gerar credenciais temporárias

Depois de criar e configurar o usuário do IAM, você precisa criar uma credencial temporária que pode ser usada pelo comando gcloud compute images import.

Essa credencial de usuário consiste no seguinte:

  • Um ID da chave de acesso: aws-access-key-id
  • Uma chave de acesso secreta: aws-secret-access-key
  • Um token de sessão: aws-session-token

Essa credencial temporária do usuário do AWS IAM precisa ser gerada a partir de um usuário do IAM. O usuário do IAM selecionado precisa ter todas as permissões necessárias.

Para gerar as credenciais temporárias, você precisa usar a ferramenta de linha de comando da AWS ou gerar as credenciais de modo programático. Para instalar a linha de comando da AWS, consulte Como instalar a versão 2 da CLI da AWS.

Por exemplo, o comando a seguir gera uma credencial que expira em 3.600 segundos. Especifique tempo suficiente para importar sua imagem para o Google Cloud.

aws sts get-session-token --duration-seconds 3600

Para mais informações sobre como gerar credenciais temporárias, consulte Como usar credenciais temporárias com recursos da AWS.

Importar imagens para o Compute Engine

Depois de criar um usuário do AWS IAM e gerar as credenciais temporárias do usuário, é possível importar sua imagem para o Compute Engine.

Importar um AMI da AWS

  1. Configure um bucket do AWS S3. Esse bucket é usado como um local de armazenamento temporário do qual a Google Cloud CLI pode exportar o AMI. A Google Cloud CLI exclui o AMI desse bucket assim que a importação para o Compute Engine é concluída.

    Este bucket precisa estar na mesma região que o AMI.

  2. Importe o AMI. Para importar um AMI do AWS, use o comando gcloud compute images import:

    gcloud compute images import IMAGE_NAME \
        --aws-region=AWS_REGION \
        --aws-access-key-id=AWS_ACCESS_KEY_ID \
        --aws-secret-access-key=AWS_SECRET_ACCESS_KEY \
        --aws-session-token=AWS_SESSION_TOKEN \
        --aws-ami-id=AWS_AMI_ID \
        --aws-ami-export-location=AWS_AMI_EXPORT_LOCATION \
        --os=OS
    

    Substitua:

    • IMAGE_NAME: nome da imagem do AMI a ser criada.
    • AWS_REGION: região da AWS da imagem que você quer importar.
    • AWS_ACCESS_KEY_ID: ID de chave de acesso para uma credencial temporária da AWS. Esse ID precisa ser gerado com o AWS Security Token Service.
    • AWS_SECRET_ACCESS_KEY: chave de acesso secreta para uma credencial temporária da AWS. É preciso gerar essa chave usando o AWS Security Token Service.
    • AWS_SESSION_TOKEN: token de sessão para uma credencial da AWS temporária. Esse token de sessão precisa ser gerado com o AWS Security Token Service.
    • AWS_AMI_ID: ID do AWS AMI da imagem a ser importada.
    • AWS_AMI_EXPORT_LOCATION: local do bucket S3 da AWS de onde você quer exportar a imagem. Esse bucket precisa estar na mesma região que o AMI.
    • OS: sistema operacional da imagem de disco que está sendo importada.

    Exemplo

    Por exemplo, para importar do bucket da S3 ami-test-bucket uma imagem de AMI que tenha o ID ami-04d75016789164863 e nomeá-la como my-ami-test-image, o comando se parecerá com este:

    gcloud compute images import my-ami-test-image \
        --aws-region=us-east-2 \
        --aws-access-key-id=ASIAXS3ZFH4O3WWGMMH5 \
        --aws-secret-access-key=aW/uxvQD68A+hv3m5oQ4zFfaKiS+za+X/kRlBvx0 - \
        --aws-session-token=IQoJb3JpZ2luX2VjEEQaCWPIEwL7Qi76PyEIfFyj88...== \
        --aws-ami-id=ami-04d75016789164863 \
        --aws-ami-export-location=s3://ami-test-bucket \
        --os=ubuntu-1804
    

Importar uma imagem de disco virtual da AWS

Para importar uma imagem de disco virtual da AWS, use o comando gcloud compute images import:

gcloud compute images import IMAGE_NAME \
    --aws-region=AWS_REGION \
    --aws-access-key-id=AWS_ACCESS_KEY_ID \
    --aws-secret-access-key=AWS_SECRET_ACCESS_KEY \
    --aws-session-token=AWS_SESSION_TOKEN \
    --aws-source-ami-file-path=DISK_IMAGE_FILE_PATH \
    --os=OS

Substitua:

  • IMAGE_NAME: nome da imagem de disco a ser criada.
  • AWS_REGION: região da AWS da imagem que você quer importar.
  • AWS_ACCESS_KEY_ID: ID de chave de acesso para uma credencial temporária da AWS. Esse ID precisa ser gerado com o AWS Security Token Service.
  • AWS_SECRET_ACCESS_KEY: chave de acesso secreta para uma credencial temporária da AWS. É preciso gerar essa chave usando o AWS Security Token Service.
  • AWS_SESSION_TOKEN: token de sessão para uma credencial da AWS temporária. Esse token de sessão precisa ser gerado com o AWS Security Token Service.
  • DISK_IMAGE_FILE_PATH: caminho do recurso S3 do arquivo de imagem do disco virtual que você quer importar.
  • OS: sistema operacional da imagem de disco que está sendo importada.

Exemplo

Por exemplo, para importar do bucket da S3 image-test-bucket um disco virtual ubuntu1804.vmdk e nomeá-lo como my-test-image, o comando pode se parecerá com este:

gcloud compute images import my-test-image \
    --aws-region=us-east-2 \
    --aws-access-key-id=ASIAXS3ZFH4O3WWGMMH5 \
    --aws-secret-access-key=aW/uxvQD68A+hv3m5oQ4zFfaKiS+za+X/kRlBvx0 - \
    --aws-session-token=IQoJb3JpZ2luX2VjEEQaCWPIEwL7Qi76PyEIfFyj88...== \
    --aws-source-ami-file-path=s3://image-test-bucket/ubuntu1804.vmdk \
    --os=ubuntu-1804

A seguir