Importación de una imagen de máquina virtual a un dispositivo Snow Family
Puede utilizar la AWS CLI y el servicio VM Import/Export para importar una imagen de máquina virtual (VM) al dispositivo Snow Family como una imagen de máquina de Amazon (AMI). Después de importar una imagen, debe registrarla como una AMI e inicializarla como una instancia compatible con Amazon EC2.
Puede agregar AMI de Amazon EC2 al dispositivo al crear una tarea para pedir un dispositivo Snow Family. Utilice este procedimiento después de haber recibido el dispositivo Snow Family. Para obtener más información, consulte Elección de las opciones de computación y almacenamiento.
También puede utilizar 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 al dispositivo como una AMI compatible con Amazon EC2 en esta guía.
Temas
- Paso 1: Preparar la imagen de la máquina virtual y cargarla en el dispositivo Snow Family
- Paso 2: Configurar los permisos necesarios en el dispositivo Snow Family
- Paso 3: Importar la imagen de la máquina virtual como una instantánea en el dispositivo Snow Family
- Paso 4: Registrar la instantánea como una AMI en el dispositivo Snow Family
- Paso 5: Inicializar una instancia desde la AMI en el dispositivo Snow Family
- Acciones de AMI adicionales para un dispositivo Snow Family
Paso 1: Preparar la imagen de la máquina virtual y cargarla en el dispositivo Snow Family
Prepare la imagen de la máquina virtual mediante la exportación de una imagen de máquina virtual desde una AMI o instancia de Amazon EC2 en la Nube de AWS mediante VM Import/Export o mediante la generación de la imagen de máquina virtual de forma local mediante la plataforma de virtualización que elija.
Para exportar una instancia de Amazon EC2 como una imagen de máquina virtual mediante VM Import/Export, consulte Exportación de una instancia como una 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 el entorno local, asegúrese de que la imagen esté configurada para usarse como AMI en el dispositivo Snow Family. Es posible que deba configurar los siguientes elementos en función del 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. Cree copias locales de los pares de claves. Para obtener más información, consulte Uso de SSH para conectarse a la instancia de computación en un dispositivo Snowball Edge.
Instale y configure el software que vaya a utilizar en el dispositivo Snow Family.
nota
Tenga en cuenta las siguientes limitaciones al preparar una instantánea de disco para un dispositivo Snow Family.
-
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 en un bucket de Amazon S3 en el dispositivo Snow Family
Después de preparar una imagen de máquina virtual, cárguela en un bucket de S3 del dispositivo Snow Family o el clúster. Puede utilizar el adaptador de S3 o el almacenamiento compatible con Amazon S3 en dispositivos Snow Family para cargar la instantánea.
Carga de la imagen de máquina virtual mediante el adaptador de S3
Utilice el comando
cp
para copiar el archivo de imagen de máquina virtual en un bucket del dispositivo.aws s3 cp
image-path
s3://S3-bucket-name
--endpoint http://S3-object-API-endpoint:443
--profileprofile-name
Para obtener más información, consulte Comandos de la AWS CLI admitidos en esta guía.
Carga de la imagen de máquina virtual mediante el almacenamiento compatible con Amazon S3 en dispositivos Snow Family
Utilice el comando
put-object
para copiar el archivo de imagen de instantánea en un bucket del dispositivo.aws s3api put-object --bucket
bucket-name
--keypath-to-snapshot-file
--bodysnapshot-file
--profileyour-profile
--endpoint-urls3api-endpoint-ip
Para obtener más información, consulte Uso de objetos de S3 en un dispositivo Snowball Edge.
Paso 2: Configurar los permisos necesarios en el dispositivo Snow Family
Para que la importación se realice correctamente, debe configurar los permisos para VM Import/Export en el dispositivo Snow Family, 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 VM Import/Export en un dispositivo Snow Family
Para poder iniciar el proceso de importación, debe crear un rol de IAM con una política de confianza que permita que VM Import/Export en el dispositivo Snow Family asuma el rol. Se conceden permisos adicionales al rol para permitir que VM Import/Export en el dispositivo obtenga acceso a la imagen almacenada en el bucket de 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
--profileprofile-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
--profileprofile-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
--profileprofile-name
--endpoint http://snowball-ip
:6078 --region snow
Permisos que requiere el intermediario en un dispositivo Snow Family
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
--profileprofile-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
--profileprofile-name
--endpoint http://snowball-ip
:6078 --region snow
Permisos necesarios para llamar a las API de Amazon EC2 en un dispositivo Snow Family
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
--profileprofile-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
--profileprofile-name
--endpoint http://snowball-ip
:6078 --region snow
Paso 3: Importar la imagen de la máquina virtual como una instantánea en el dispositivo Snow Family
El siguiente paso consiste en importar la imagen de máquina virtual como una instantánea en el dispositivo. El valor del parámetro S3Bucket
es el nombre del bucket que contiene la imagen de máquina virtual. El valor del parámetro S3Key
es la ruta al archivo de imagen de máquina virtual de este bucket.
aws ec2 import-snapshot --disk-container "Format=RAW,UserBucket={S3Bucket=
bucket-name
,S3Key=image-file
}" --profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
Para obtener más información, consulte import-snapshot
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 resultado 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
Actualmente, los dispositivos Snow Family solo permiten ejecutar un trabajo de importación activo cada 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 retrasos, 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
--profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
Paso 4: Registrar la instantánea como una AMI en el dispositivo Snow Family
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 las instantáneas estén disponibles.
Para obtener más información, consulte register-image
ejemplo del comando register-image
aws ec2 register-image \ --name
ami-01
\ --descriptionmy-ami-01
\ --block-device-mappings "[{\"DeviceName\": \"/dev/sda1\",\"Ebs\":{\"Encrypted\":false,\"DeleteOnTermination\":true,\"SnapshotId\":\"snapshot-id
\",\"VolumeSize\":30}}]" \ --root-device-name /dev/sda1 \ --profileprofile-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 parámetro block-device-mapping de register-image
[ { "DeviceName": "/dev/sda", "Ebs": { "Encrypted": false, "DeleteOnTermination": true, "SnapshotId": "
snapshot-id
", "VolumeSize": 30 } } ]
ejemplo del comando register-image
{ "ImageId": "s.ami-8de47d2e397937318" }
Paso 5: Inicializar una instancia desde la AMI en el dispositivo Snow Family
Para inicializar una instancia, consulte run-instances
El valor del parámetro image-id
es el valor del nombre ImageId
como resultado del comando register-image
.
aws ec2 run-instances --image-id
image-id
--instance-typeinstance-type
--profileprofile-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 puede utilizar AWS OpsHub para inicializar la instancia. Para obtener más información, consulte Inicialización de una instancia compatible con Amazon EC2 en esta guía.
Acciones de AMI adicionales para un dispositivo Snow Family
Puede utilizar comandos de la AWS CLI 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.
Supervisión del estado de importación de instantáneas en un dispositivo Snow Family
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 paginación y filtrado por task-state
.
ejemplo del comando describe-import-snapshot-tasks
aws ec2 describe-import-snapshot-tasks --import-task-ids
id
--profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
ejemplo del resultado del comando describe-import-snapshot-tasks
{ "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 siete 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]
Cancelación de una tarea de importación en un dispositivo Snow Family
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
--profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
ejemplo del resultado del comando cancel-import-task
{ "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 en un dispositivo Snow Family
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 paginación y filtrado por volume-id
, status
y start-time
.
ejemplo del comando describe-snapshots
aws ec2 describe-snapshots --snapshot-ids
snapshot-id
--profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
ejemplo del resultado del comando describe-snapshots
{ "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]
Eliminación de una instantánea de un dispositivo Snow Family
Para eliminar instantáneas de su propiedad y que ya no necesita, puede usar el comando delete-snapshot
.
ejemplo del comando delete-snapshot
aws ec2 delete-snapshot --snapshot-id
snapshot-id
--profileprofile-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 en un dispositivo Snow Family
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 comando deregister-image
aws ec2 deregister-image --image-id
image-id
--profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
Este comando no admite los siguientes parámetros.
[--dry-run]
[--no-dry-run]