¿Cómo se utiliza VM Import/Export para exportar una VM basada en una imagen de máquina de Amazon (AMI)?

5 minutos de lectura
0

Quiero exportar una copia de mi imagen de máquina de Amazon (AMI) como máquina virtual (VM) para implementarla en mi entorno de virtualización in situ. ¿Cómo se utiliza VM Import/Export para hacerlo?

Descripción corta

Puede utilizar la Interfaz de la línea de comandos de AWS (AWS CLI) para iniciar una tarea de exportación de imágenes mediante VM Import/Export. A continuación, se exporta una copia de la imagen de máquina de Amazon (AMI) como un archivo de VM y se escribe en un bucket de Amazon Simple Storage Service (Amazon S3). Puede usar la VM exportada para desplegar una instancia nueva y estandarizada en su entorno de virtualización in situ. Puede exportar la mayoría de las AMI a Citrix Xen, Microsoft Hyper-V o VMware vSphere.

Nota: Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de utilizar la versión más reciente de AWS CLI.

Antes de iniciar los siguientes pasos de resolución, haga lo siguiente:

Resolución

1.    Cree una AMI respaldada por Amazon Elastic Block Store (Amazon EBS) a partir de la instancia de EC2 que desee exportar.

En Linux, consulte Creación de una AMI de Linux respaldada por Amazon EBS.

En Windows, consulte Creación de una AMI de Windows personalizada.

2.    Instale AWS CLI en un equipo cliente y configúrela con las credenciales de AWS generadas para su usuario de IAM.

3.    Cree un nuevo bucket de S3 en la misma región de AWS que la AMI que quiere exportar.

4.     Cree el rol de servicio requerido. Como requisito previo, asegúrese de habilitar AWS Security Token Service (AWS STS) en la región en la que utilice VM Import/Export.

Para crear el rol de servicio, cree primero un archivo denominado trust-policy.json en su equipo y, a continuación, añada la siguiente política al archivo:

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

Ejecute el comando create-role para crear un rol denominado vmimport mediante el archivo trust-policy.json para conceder a VM Import/Export acceso al rol:

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

Nota: En el ejemplo anterior, asegúrese de especificar la ruta completa a la ubicación del archivo trust-policy.json que ha creado. Asegúrese de incluir el prefijo file://.

Cree otro archivo denominado role-policy.json en su equipo y añada la siguiente política al archivo. Sustituya my-export-bucket por el nombre de su bucket de 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": "*"
        }
    ]
}

Utilice el comando put-role-policy para adjuntar la política role-policy.json al rol vmimport que ha creado anteriormente:

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

En el ejemplo anterior, asegúrese de especificar la ruta completa a la ubicación del archivo role-policy.json.

Nota: Es posible que las futuras actualizaciones de VM Import/Export requieran permisos adicionales en el rol vmimport. Consulte el ejemplo de política en la documentación referente al rol de servicio requerido para obtener el ejemplo más actualizado de los permisos requeridos.

5.    Desde el equipo cliente en el que ha instalado AWS CLI, ejecute el comando export-image de AWS CLI para iniciar la tarea de exportación de imágenes:

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

Nota: En el ejemplo anterior, sustituya ami-id por su ID de AMI. Elija el formato de imagen de disco que prefiera (VMDK, RAW o VHD). Sustituya my-export-bucket por el nombre de su bucket de S3. El archivo exportado se escribe en el bucket de S3 especificado con la clave de S3 prefixexport-ami-id.format (por ejemplo, my-export-bucket/exports/export-ami-1234567890abcdef0.vmdk). Puede añadir un prefijo al archivo exportado.

Si la solicitud se realiza correctamente, el resultado del comando export-image devuelve detalles sobre la tarea, como un ID de tarea de exportación de imágenes, como se muestra en el siguiente ejemplo:

{
    "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 comprobar el estado de la tarea de exportación de imágenes, ejecute el comando describe-export-image-tasks de AWS CLI.

Ejemplo

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

Nota: En el ejemplo anterior, sustituya export-ami-id por el ID de la tarea de exportación de imágenes del resultado del comando export-image.

El resultado del comando describe-export-image-tasks devuelve detalles sobre el progreso y el estado general de la tarea. El siguiente resultado de ejemplo corresponde a una tarea de exportación de imágenes que se encuentra en estado activo y en curso:

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

7.    Cuando el estado de la tarea de exportación de imágenes cambie a completado, el archivo exportado estará listo en su bucket de S3 como objeto. El siguiente resultado de ejemplo muestra una tarea de exportación de imágenes finalizada. El archivo exportado resultante en Amazon S3 es my-export-bucket/exports/export-ami-1234567890abcdef0.vmdk.

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

8.    Acceda a su bucket de S3 mediante la consola de Amazon S3 para localizar y descargar el objeto.


Información relacionada

Exportación desde una AMI

Creación de un usuario de IAM en una cuenta de AWS

Acceso programático (ID de clave de acceso y clave de acceso secreta)

Imágenes de máquinas de Amazon (AMI)

Solución de problemas con VM Import/Export

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 3 años