Importar imágenes desde AWS


Si tienes imágenes de máquina de Amazon (AMI) o una imagen de disco virtual (como VMDK y VHD) almacenadas en un bucket de S3 en Amazon Web Services (AWS), puedes usar Google Cloud CLI para importar estas imágenes en Google Cloud.

Como alternativa, puedes importar una imagen si sigues las instrucciones para importar discos de arranque de forma manual.

Para obtener una lista completa de las opciones de importación, consulta Elige una ruta de migración.

Antes de comenzar

  • Configura la autenticación si aún no lo hiciste. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.

Descripción general de la importación de imágenes desde AWS

El proceso para importar una imagen desde AWS hacia Compute Engine es el siguiente:

  1. Desde tu cuenta de AWS, crea un usuario de IAM que tenga los permisos necesarios para realizar la exportación.

  2. Desde tu cuenta de AWS, establece y consulta los ajustes de configuración.

  3. En la cuenta de AWS, mediante el usuario de IAM creado en el paso anterior, genera credenciales temporales que puede usar Google Cloud CLI.

  4. En Google Cloud, importa la imagen mediante Google Cloud CLI. Google Cloud CLI completa los siguientes pasos:

    • Importa la imagen desde AWS hacia Compute Engine.
    • Agrega la imagen a la lista de imágenes disponibles en tu proyecto especificado en Compute Engine.

Limitaciones y restricciones

Crea un usuario IAM de AWS

Dado que es posible que no sea una práctica recomendada generar credenciales mediante tu cuenta de usuario raíz de AWS, por motivos de seguridad, Google recomienda que crees uno o más usuarios de IAM y les proporciones los permisos mínimos necesarios para exportar una AMI o un disco virtual desde AWS.

Los permisos mínimos requeridos para el usuario de IAM dependen del tipo de imagen (AMI o imagen de disco virtual) que deseas exportar desde AWS.

Crea un usuario de IAM de AWS para la exportación de AMI

Para crear este usuario, consulta crea un usuario de IAM en tu cuenta de AWS.

Este usuario debe tener los siguientes permisos necesarios y la siguiente función de servicio:

Crea un usuario de IAM de AWS para exportar imágenes de disco virtual

Para crear este usuario, consulta crea un usuario de IAM en tu cuenta de AWS.

Los permisos mínimos que requiere este usuario se describen en la siguiente JSON política de IAM. Reemplaza IMAGE_FILE_PATH con la ruta de acceso al archivo de imagen que deseas importar.

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

Establece y visualiza la configuración

Después de crear el usuario de IAM, debes configurar tu entorno.

Para ver y ajustar la configuración, ejecuta el siguiente comando:

aws configure

Para obtener más información sobre este comando, consulta Establece y visualiza la configuración.

Genera credenciales temporales

Después de crear y configurar el usuario de IAM, debes crear una credencial temporal que pueda usar el comando gcloud compute images import.

Esta credencial de usuario contiene lo siguiente:

  • Un ID de clave de acceso: aws-access-key-id
  • Una clave de acceso secreta: aws-secret-access-key
  • Un token de sesión: aws-session-token

Esta credencial de usuario temporal de IAM de AWS se debe generar desde un usuario de IAM. El usuario de IAM seleccionado debe tener todos los permisos necesarios.

Para generar las credenciales temporales, debes usar la herramienta de línea de comandos de AWS o puedes generar las credenciales de manera programática. Para instalar la línea de comandos de AWS, consulta Instala la versión 2 de la CLI de AWS.

Por ejemplo, el siguiente comando genera una credencial que vence en 3,600 segundos. Asegúrate de especificar el tiempo suficiente para importar la imagen a Google Cloud.

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

Para obtener más información sobre cómo generar credenciales temporales, consulta Usa credenciales temporales con recursos de AWS.

Importar imágenes a Compute Engine

Después de crear un usuario de IAM de AWS y generar las credenciales de usuario temporales, podrás importar tu imagen a Compute Engine.

Importa una AMI desde AWS

  1. Configura un bucket de AWS S3. Este bucket se usa como una ubicación de almacenamiento temporal desde la que Google Cloud CLI puede exportar la AMI. Google Cloud CLI borra la AMI de este bucket en cuanto la importación a Compute Engine se complete de forma correcta.

    Este bucket debe estar en la misma región que la AMI.

  2. Importa la AMI. Para importar una AMI desde AWS, usa el 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
    

    Reemplaza lo siguiente:

    • IMAGE_NAME: nombre de la imagen AMI que se creará.
    • AWS_REGION: región de AWS de la imagen que deseas importar.
    • AWS_ACCESS_KEY_ID: ID de clave de acceso para una credencial temporal de AWS. Este ID se debe generar mediante el servicio de token de seguridad de AWS.
    • AWS_SECRET_ACCESS_KEY: clave de acceso secreta para una credencial temporal de AWS. Esta clave se debe generar mediante el servicio de token de seguridad de AWS.
    • AWS_SESSION_TOKEN: token de sesión para una credencial temporal de AWS. Este token de sesión debe generarse mediante el servicio de token de seguridad de AWS.
    • AWS_AMI_ID: ID de la AMI de AWS de la imagen que se importará.
    • AWS_AMI_EXPORT_LOCATION: ubicación del bucket de S3 de AWS desde la que deseas exportar la imagen. Este bucket debe estar en la misma región que la AMI.
    • OS: sistema operativo de la imagen de disco que se importará.

    Ejemplo

    Por ejemplo, para importar una imagen AMI que tiene el ID ami-04d75016789164863 desde tu bucket S3 ami-test-bucket y asignarle el nombre my-ami-test-image, tu comando puede parecerse al siguiente:

    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
    

Importa una imagen de disco virtual desde AWS

Para importar una imagen de disco virtual desde AWS, usa el 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

Reemplaza lo siguiente:

  • IMAGE_NAME: nombre de la imagen de disco que se creará.
  • AWS_REGION: región de AWS de la imagen que deseas importar.
  • AWS_ACCESS_KEY_ID: ID de clave de acceso para una credencial temporal de AWS. Este ID se debe generar mediante el servicio de token de seguridad de AWS.
  • AWS_SECRET_ACCESS_KEY: clave de acceso secreta para una credencial temporal de AWS. Esta clave se debe generar mediante el servicio de token de seguridad de AWS.
  • AWS_SESSION_TOKEN: token de sesión para una credencial temporal de AWS. Este token de sesión debe generarse mediante el servicio de token de seguridad de AWS.
  • DISK_IMAGE_FILE_PATH: ruta de acceso al recurso S3 del archivo de imagen de disco virtual que deseas importar.
  • OS: sistema operativo de la imagen de disco que se importará.

Ejemplo

Por ejemplo, para importar un disco virtual ubuntu1804.vmdk desde tu bucket S3 image-test-bucket y llamarlo my-test-image, tu comando puede parecerse al siguiente:

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

¿Qué sigue?