Importación de una imagen de máquina virtual a un dispositivo de la familia Snow - AWS Snowball Edge Guía para desarrolladores

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Importación de una imagen de máquina virtual a un dispositivo de la familia Snow

Puede utilizar el AWS CLI servicio VM Import/Export para importar una imagen de máquina virtual (VM) al dispositivo de la familia Snow como una imagen de máquina de Amazon (AMI). Tras importar una imagen de máquina virtual, registre la imagen como una AMI y ejecútela como una instancia compatible con Amazon EC2.

Puede añadir AMI de Amazon EC2 al dispositivo al crear una tarea para solicitar un dispositivo de la familia Snow. Siga este procedimiento después de recibir el dispositivo de la familia Snow. Para obtener más información, consulte Paso 2: elija las opciones de computación y almacenamiento.

También puede utilizarlo AWS OpsHub para cargar el archivo de imagen de la máquina virtual. Para obtener más información, consulte Importación de una imagen a su dispositivo como una AMI compatible con Amazon EC2 en esta guía.

Paso 1: Prepare la imagen de la máquina virtual y cárguela en el dispositivo de la familia Snow

Prepare la imagen de máquina virtual exportando una imagen de máquina virtual desde una AMI o instancia de Amazon EC2 Nube de AWS mediante VM Import/Export o generando la imagen de máquina virtual de forma local con la plataforma de virtualización que elija.

Para exportar una instancia de Amazon EC2 como imagen de máquina virtual mediante VM Import/Export, consulte Exportación de una instancia como máquina virtual mediante VM Import/Export en la Guía del usuario de VM Import/Export. Para exportar una AMI de Amazon EC2 como una imagen de máquina virtual mediante VM Import/Export, consulte Exportación de una máquina virtual directamente desde una imagen de máquina de Amazon (AMI) en la Guía del usuario de VM Import/Export.

Si genera una imagen de máquina virtual desde su entorno local, asegúrese de que la imagen esté configurada para su uso como AMI en el dispositivo de la familia Snow. Es posible que necesite configurar los siguientes elementos, según su entorno.

  • Configure y actualice el sistema operativo.

  • Establezca un nombre de host.

  • Asegúrese de que el protocolo de tiempo de red (NTP) esté configurado.

  • Incluya las claves públicas de SSH, si es necesario. Haga copias locales de los pares de claves. Para obtener más información, consulte Uso de SSH para conectarse a sus instancias de cómputo en un Snowball Edge.

  • Instale y configure cualquier software que vaya a utilizar en el dispositivo de la familia Snow.

nota

Tenga en cuenta las siguientes limitaciones al preparar una instantánea de disco para un dispositivo de la familia Snow.

  • Actualmente, los dispositivos Snow Family solo permiten importar instantáneas que tienen el formato de imagen RAW.

  • Actualmente, los dispositivos Snow Family solo permiten importar instantáneas cuyos tamaños oscilen entre 1 GB y 1 TB.

Carga de una imagen de máquina virtual a un bucket de Amazon S3 en el dispositivo de la familia Snow

Tras preparar una imagen de máquina virtual, cárguela en un bucket de S3 del dispositivo o clúster de la familia Snow. Puede utilizar el adaptador S3 o el almacenamiento compatible con Amazon S3 en los dispositivos de la familia Snow para cargar la instantánea.

Para cargar la imagen de la máquina virtual mediante el adaptador S3
  • Utilice el cp comando para copiar el archivo de imagen de la máquina virtual en un depósito del dispositivo.

    aws s3 cp image-path s3://S3-bucket-name --endpoint http://S3-object-API-endpoint:443 --profile profile-name

    Para obtener más información, consulte AWS CLI los comandos compatibles en esta guía.

Para cargar la imagen de la máquina virtual mediante un almacenamiento compatible con Amazon S3 en los dispositivos de la familia Snow
  • Utilice el put-object comando para copiar el archivo de instantáneas en un depósito del dispositivo.

    aws s3api put-object --bucket bucket-name --key path-to-snapshot-file --body snapshot-file --profile your-profile --endpoint-url s3api-endpoint-ip

    Para obtener más información, consulte Trabajo con objetos S3 en un dispositivo Snowball Edge.

Paso 2: Configure los permisos necesarios

Para que la importación se realice correctamente, debe configurar los permisos para VM Import/Export en el dispositivo de la familia Snow, Amazon EC2 y el usuario.

nota

Los roles de servicio y las políticas que proporcionan estos permisos se encuentran en el dispositivo Snow Family.

Permisos necesarios para la importación y exportación de máquinas virtuales

Antes de iniciar el proceso de importación, debe crear un rol de IAM con una política de confianza que permita que VM Import/Export del dispositivo de la familia Snow asuma el rol. Se otorgan permisos adicionales a la función para permitir que VM Import/Export del dispositivo acceda a la imagen almacenada en el bucket S3 del dispositivo.

Creación de un archivo json de política de confianza

A continuación, se muestra un ejemplo de política de confianza que hay que adjuntar al rol para que VM Import/Export pueda obtener acceso a la instantánea que se debe importar del bucket de S3.

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

Creación de un rol con el archivo json de política de confianza

El nombre del rol puede ser vmimport. Puede cambiarlo mediante la opción --role-name del comando:

aws iam create-role --role-name role-name --assume-role-policy-document file:///trust-policy-json-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

A continuación se muestra un ejemplo de salida del comando create-role.

{ "Role":{ "AssumeRolePolicyDocument":{ "Version":"2012-10-17", "Statement":[ { "Action":"sts:AssumeRole", "Effect":"Allow", "Principal":{ "Service":"vmie.amazonaws.com" } } ] }, "MaxSessionDuration":3600, "RoleId":"AROACEMGEZDGNBVGY3TQOJQGEZAAAABQBB6NSGNAAAABPSVLTREPY3FPAFOLKJ3", "CreateDate":"2022-04-19T22:17:19.823Z", "RoleName":"vmimport", "Path":"/", "Arn":"arn:aws:iam::123456789012:role/vmimport" } }

Creación de una política para el rol

La siguiente política de ejemplo tiene los permisos mínimos necesarios para obtener acceso a Amazon S3. Cambie el nombre del bucket de Amazon S3 por el del bucket que contiene sus imágenes. En el caso de un dispositivo Snowball Edge independiente, cambie snow-id por su ID de trabajo. Si se trata de un clúster de dispositivos, cambie snow-id por el ID del clúster. También puede usar prefijos para restringir aún más la ubicación desde la que VM Import/Export puede importar instantáneas. Cree un archivo json de política como este.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:GetMetadata" ], "Resource":[ "arn:aws:s3:snow:account-id:snow/snow-id/bucket/import-snapshot-bucket-name", "arn:aws:s3:snow:account-id:snow/snow-id/bucket/import-snapshot-bucket-name/*" ] } ] }

Creación de una política con el archivo de política:

aws iam create-policy --policy-name policy-name --policy-document file:///policy-json-file-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

A continuación, se muestra un ejemplo de salida del comando create-policy.

{ "Policy":{ "PolicyName":"vmimport-resource-policy", "PolicyId":"ANPACEMGEZDGNBVGY3TQOJQGEZAAAABOOEE3IIHAAAABWZJPI2VW4UUTFEDBC2R", "Arn":"arn:aws:iam::123456789012:policy/vmimport-resource-policy", "Path":"/", "DefaultVersionId":"v1", "AttachmentCount":0, "IsAttachable":true, "CreateDate":"2020-07-25T23:27:35.690000+00:00", "UpdateDate":"2020-07-25T23:27:35.690000+00:00" } }

Asociación de la política al rol

Asocie una política al rol anterior y conceda permisos de acceso a los recursos necesarios. Esto permite que el servicio local VM Import/Export descargue la instantánea de Amazon S3 en el dispositivo.

aws iam attach-role-policy --role-name role-name --policy-arn arn:aws:iam::123456789012:policy/policy-name --profile profile-name --endpoint http://snowball-ip:6078 --region snow

Permisos requeridos por la persona que llama

Además del rol que debe asumir VM Import/Export de Snowball Edge, también debe asegurarse de que el usuario tenga los permisos que le permitan transferir el rol a VMIE. Si utiliza el usuario raíz predeterminado para realizar la importación, el usuario raíz ya tiene todos los permisos necesarios, por lo que puede omitir este paso e ir al paso 3.

Asocie los dos permisos de IAM siguientes al usuario que está realizando la importación.

  • pass-role

  • get-role

Creación de una política para el rol

A continuación se ofrece un ejemplo de una política que permite a un usuario realizar las acciones get-role y pass-role para el rol de IAM.

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action": "iam:GetRole", "Resource":"*" }, { "Sid": "iamPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "importexport.amazonaws.com" } } } ] }

Creación de una política con el archivo de política:

aws iam create-policy --policy-name policy-name --policy-document file:///policy-json-file-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

A continuación, se muestra un ejemplo de salida del comando create-policy.

{ "Policy":{ "PolicyName":"caller-policy", "PolicyId":"ANPACEMGEZDGNBVGY3TQOJQGEZAAAABOOOTUOE3AAAAAAPPBEUM7Q7ARPUE53C6R", "Arn":"arn:aws:iam::123456789012:policy/caller-policy", "Path":"/", "DefaultVersionId":"v1", "AttachmentCount":0, "IsAttachable":true, "CreateDate":"2020-07-30T00:58:25.309000+00:00", "UpdateDate":"2020-07-30T00:58:25.309000+00:00" } }

Una vez generada la política, asóciela a los usuarios de IAM que llamarán a la API o a la operación de la CLI de Amazon EC2 para importar la instantánea.

aws iam attach-user-policy --user-name your-user-name --policy-arn arn:aws:iam::123456789012:policy/policy-name --profile profile-name --endpoint http://snowball-ip:6078 --region snow

Permisos necesarios para llamar a las API de Amazon EC2 en su dispositivo

Para importar una instantánea, el usuario de IAM debe tener los permisos ec2:ImportSnapshot. Si no es necesario restringir el acceso al usuario, puede utilizar los permisos ec2:* para conceder acceso total a Amazon EC2. Los siguientes son los permisos que se pueden conceder o restringir para Amazon EC2 en su dispositivo. Se muestra el contenido de la creación de un archivo de política:

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "ec2:ImportSnapshot", "ec2:DescribeImportSnapshotTasks", "ec2:CancelImportTask", "ec2:DescribeSnapshots", "ec2:DeleteSnapshot", "ec2:RegisterImage", "ec2:DescribeImages", "ec2:DeregisterImage" ], "Resource":"*" } ] }

Creación de una política con el archivo de política:

aws iam create-policy --policy-name policy-name --policy-document file:///policy-json-file-path --profile profile-name --endpoint http://snowball-ip:6078 --region snow

A continuación, se muestra un ejemplo de salida del comando create-policy.

{ "Policy": { "PolicyName": "ec2-import.json", "PolicyId": "ANPACEMGEZDGNBVGY3TQOJQGEZAAAABQBGPDQC5AAAAATYN62UNBFYTF5WVCSCZS", "Arn": "arn:aws:iam::123456789012:policy/ec2-import.json", "Path": "/", "DefaultVersionId": "v1", "AttachmentCount": 0, "IsAttachable": true, "CreateDate": "2022-04-21T16:25:53.504000+00:00", "UpdateDate": "2022-04-21T16:25:53.504000+00:00" } }

Una vez generada la política, asóciela a los usuarios de IAM que llamarán a la API o a la operación de la CLI de Amazon EC2 para importar la instantánea.

aws iam attach-user-policy --user-name your-user-name --policy-arn arn:aws:iam::123456789012:policy/policy-name --profile profile-name --endpoint http://snowball-ip:6078 --region snow

Paso 3: Importe la imagen de la máquina virtual como una instantánea en el dispositivo

El siguiente paso es importar la imagen de la máquina virtual como una instantánea en el dispositivo. El valor del S3Bucket parámetro es el nombre del depósito que contiene la imagen de la máquina virtual. El valor del S3Key parámetro es la ruta al archivo de imagen de máquina virtual de este depósito.

aws ec2 import-snapshot --disk-container "Format=RAW,UserBucket={S3Bucket=bucket-name,S3Key=image-file}" --profile profile-name --endpoint http://snowball-ip:8008 --region snow

Para obtener más información, consulte import-snapshot en la Referencia de AWS CLI comandos.

Este comando no admite los siguientes modificadores.

  • [--client-data value]

  • [--client-token value]

  • [--dry-run]

  • [--no-dry-run]

  • [--encrypted]

  • [--no-encrypted]

  • [--kms-key-id value]

  • [--tag-specifications value]

ejemplo salida del comando import-snapshot
{ "ImportTaskId":"s.import-snap-1234567890abc", "SnapshotTaskDetail":{ "DiskImageSize":2.0, "Encrypted":false, "Format":"RAW", "Progress":"3", "Status":"active", "StatusMessage":"pending", "UserBucket":{ "S3Bucket":"bucket", "S3Key":"vmimport/image01" } } }
nota

Los dispositivos de la familia Snow actualmente solo permiten ejecutar un trabajo de importación activo a la vez, por dispositivo. Para iniciar una nueva tarea de importación, espere a que finalice la tarea actual o elija otro nodo disponible en un clúster. También puede optar por cancelar la importación actual si lo desea. Para evitar demoras, no reinicie el dispositivo Snow Family mientras la importación esté en curso. Si reinicia el dispositivo, se producirá un error en la importación y el progreso se eliminará cuando se pueda obtener acceso al dispositivo. Para comprobar el estado de la tarea de importación de instantáneas, use el comando siguiente:

aws ec2 describe-import-snapshot-tasks --import-task-ids id --profile profile-name --endpoint http://snowball-ip:8008 --region snow

Paso 4: Registrar la instantánea como AMI

Cuando la importación de la instantánea al dispositivo se haya realizado correctamente, puede registrarla mediante el comando register-image.

nota

Solo puede registrar una AMI cuando todas sus instantáneas estén disponibles.

Para obtener más información, consulte register-image en la Referencia de comandos. AWS CLI

ejemplo del comando register-image
aws ec2 register-image \ --name ami-01 \ --description my-ami-01 \ --block-device-mappings "[{\"DeviceName\": \"/dev/sda1\",\"Ebs\":{\"Encrypted\":false,\"DeleteOnTermination\":true,\"SnapshotId\":\"snapshot-id\",\"VolumeSize\":30}}]" \ --root-device-name /dev/sda1 \ --profile profile-name \ --endpoint http://snowball-ip:8008 \ --region snow

El siguiente es un ejemplo de JSON de asignación de dispositivos de bloques. Para obtener más información, consulte el block-device-mapping parámetro register-image en la AWS CLI Referencia de comandos.

[ { "DeviceName": "/dev/sda", "Ebs": { "Encrypted": false, "DeleteOnTermination": true, "SnapshotId": "snapshot-id", "VolumeSize": 30 } } ]
ejemplo del comando register-image
{ "ImageId": "s.ami-8de47d2e397937318" }

Paso 5: lance una instancia desde la AMI

Para lanzar una instancia, consulta run-instances en la Referencia de AWS CLI comandos.

El valor del image-id parámetro es el valor del ImageId nombre como resultado del register-image comando.

aws ec2 run-instances --image-id image-id --instance-type instance-type --profile profile-name --endpoint http://snowball-ip:8008 --region snow
{ "Instances":[ { "SourceDestCheck":false, "CpuOptions":{ "CoreCount":1, "ThreadsPerCore":2 }, "InstanceId":"s.i-12345a73123456d1", "EnaSupport":false, "ImageId":"s.ami-1234567890abcdefg", "State":{ "Code":0, "Name":"pending" }, "EbsOptimized":false, "SecurityGroups":[ { "GroupName":"default", "GroupId":"s.sg-1234567890abc" } ], "RootDeviceName":"/dev/sda1", "AmiLaunchIndex":0, "InstanceType":"sbe-c.large" } ], "ReservationId":"s.r-1234567890abc" }
nota

También se puede utilizar AWS OpsHub para lanzar la instancia. Para obtener más información, consulte Lanzamiento de una instancia compatible con Amazon EC2 en esta guía.

Acciones adicionales de AMI

Puede utilizar AWS CLI comandos adicionales para supervisar el estado de importación de las instantáneas, obtener detalles sobre las instantáneas que se han importado, cancelar la importación de una instantánea y eliminar o anular el registro de las instantáneas una vez importadas.

Supervisar el estado de importación de instantáneas

Para ver el estado actual del progreso de la importación, puede ejecutar el comando describe-import-snapshot-tasks de Amazon EC2. Este comando admite la paginación y el task-state filtrado en.

ejemplo del comando describe-import-snapshot-tasks
aws ec2 describe-import-snapshot-tasks --import-task-ids id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
ejemplo de la salida del describe-import-snapshot-tasks comando
{ "ImportSnapshotTasks": [ { "ImportTaskId": "s.import-snap-8f6bfd7fc9ead9aca", "SnapshotTaskDetail": { "Description": "Created by AWS-Snowball-VMImport service for s.import-snap-8f6bfd7fc9ead9aca", "DiskImageSize": 8.0, "Encrypted": false, "Format": "RAW", "Progress": "3", "SnapshotId": "s.snap-848a22d7518ad442b", "Status": "active", "StatusMessage": "pending", "UserBucket": { "S3Bucket": "bucket1", "S3Key": "image1" } } } ] }
nota

Este comando solo muestra el resultado de las tareas que se han completado correctamente o que se han marcado como eliminadas en los últimos 7 días. El filtrado solo admite Name=task-state, Values=active | deleting | deleted | completed

Este comando no admite los siguientes parámetros.

  • [--dry-run]

  • [--no-dry-run]

Cancelar una tarea de importación

Para cancelar una tarea de importación, ejecute el comando cancel-import-task.

ejemplo del comando cancel-import-task
aws ec2 cancel-import-task --import-task-id import-task-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
ejemplo de la salida del cancel-import-task comando
{ "ImportTaskId": "s.import-snap-8234ef2a01cc3b0c6", "PreviousState": "active", "State": "deleting" }
nota

Solo se pueden cancelar las tareas que no tienen el estado completado.

Este comando no admite los siguientes parámetros.

  • [--dry-run]

  • [--no-dry-run]

Descripción de instantáneas

Después de importar una instantánea, puede usar este comando para describirla. Para filtrar las instantáneas, puede pasarlas en snapshot-ids con el ID de instantánea de la respuesta de la tarea de importación anterior. Este comando admite la paginación y el filtrado por volume-idstatus, ystart-time.

ejemplo del describe-snapshots comando
aws ec2 describe-snapshots --snapshot-ids snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
ejemplo de la salida del describe-snapshots comando
{ "Snapshots": [ { "Description": "Created by AWS-Snowball-VMImport service for s.import-snap-8f6bfd7fc9ead9aca", "Encrypted": false, "OwnerId": "123456789012", "SnapshotId": "s.snap-848a22d7518ad442b", "StartTime": "2020-07-30T04:31:05.032000+00:00", "State": "completed", "VolumeSize": 8 } ] }

Este comando no admite los siguientes parámetros.

  • [--restorable-by-user-ids value]

  • [--dry-run]

  • [--no-dry-run]

Eliminar una instantánea de un dispositivo de la familia Snow

Para eliminar instantáneas de su propiedad y que ya no necesita, puede usar el comando delete-snapshot.

ejemplo del delete-snapshot comando
aws ec2 delete-snapshot --snapshot-id snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
nota

Snowball Edge no permite eliminar instantáneas que se encuentren en estado PENDIENTE o que estén designadas como dispositivo raíz para una AMI.

Este comando no admite los siguientes parámetros.

  • [--dry-run]

  • [--no-dry-run]

Anulación del registro de una AMI

Para anular el registro de las AMI que ya no necesita, puede ejecutar el comando deregister-image. Actualmente, no se puede anular el registro de una AMI que tiene el estado Pendiente.

ejemplo del deregister-image comando
aws ec2 deregister-image --image-id image-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow

Este comando no admite los siguientes parámetros.

  • [--dry-run]

  • [--no-dry-run]