Importación de una imagen en su dispositivo como AMI de Amazon EC2 - Guía para desarrolladores de AWS Snowball Edge

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 en su dispositivo como AMI de Amazon EC2

Uso deAWS CLI, puede utilizar elAWSfunción VM Import/Export para importar imágenes a tuAWS SnowballDispositivo perimetral como instancias de EC2. Después de importar una imagen, la registra como una Imagen de máquina de Amazon (AMI) y la lanza como una instancia de Amazon EC2.

Paso 1: Prepare la imagen

Puede exportar una imagen desde elNube de AWSmediante VM Import/Export, o genere la imagen localmente con la plataforma de virtualización que elija. También puede exportar la imagen deNube de AWS.

nota

Tenga en cuenta las siguientes limitaciones al cargar imágenes en un dispositivo Snowball Edge.

  • Los dispositivos de la familia Snow actualmente solo admiten la importación de instantáneas que están en formato de imagen RAW.

  • Los dispositivos de la familia Snow actualmente solo admiten la importación de instantáneas con tamaños de 1 GB a 1 TB.

Cuando tenga la imagen, debe cargarla en Amazon S3 en su dispositivo porque solo puede importar imágenes como instantáneas de Amazon S3 que estén disponibles en su dispositivo o clúster. Durante el proceso de importación, usted elige el depósito S3 de su dispositivo Snowball Edge para almacenar la imagen.

Cargue imágenes en su dispositivo Amazon S3

Compruebe sus bucket de S3:

aws s3 ls --endpoint http://snowball-ip:8080 --profile profile-name

Para almacenar sus imágenes, elija el depósito de Amazon S3 en su dispositivo para importar imágenes como instantáneas:

aws s3 cp image-path s3://S3-bucket-name --endpoint http://snowball-ip:8080 --profile profile-name

Paso 2: Configurar los permisos necesarios

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

nota

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

Permisos necesarios para la VM Import////

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

Crear un archivo json de política de confianza

A continuación se muestra un ejemplo de política de confianza que debe adjuntarse al rol para que VM Import/Export pueda acceder a la instantánea que se debe importar desde el bucket de S3.

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

Cree un rol con el archivo json de la política de confianza

El nombre del rol puede ser vmimport. Puedes 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 la salida decreate-rolecomando.

{ "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" } }

Crear una política para el rol

La siguiente política de ejemplo tiene los permisos mínimos necesarios para acceder a Amazon S3. Cambie el nombre del depósito de Amazon S3 por el que tenga sus imágenes. También puede usar prefijos para reducir 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:::import-snapshot-bucket-name", "arn:aws:s3:::import-snapshot-bucket-name/*" ] } ] }

Cree una política con el archivo de políticas:

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

El siguiente es 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" } }

Asociar la política al rol

Adjunte una política al rol anterior y conceda permisos para acceder a los recursos necesarios. Esto permite que el servicio de importación y exportación de VM local 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 de la función que debe asumir Snowball Edge VM Import/Export, también debe asegurarse de que el usuario tenga los permisos que le permitan pasar la función a VMIE. Si usa el usuario root predeterminado para realizar la importación, el usuario root ya tiene todos los permisos necesarios, por lo que puede omitir este paso e ir al paso 3.

Adjunte los dos permisos de IAM siguientes a la cuenta de usuario que va a importar.

  • pass-role

  • get-role

Crear una política para el rol

A continuación se ofrece un ejemplo de política que permite a un usuario realizar laget-roleypass-roleacciones para la función 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" } } } ] }

Cree una política con el archivo de políticas:

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

El siguiente es 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, adjunte la política a los usuarios de IAM que llamarán a la operación de API o 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 tenerec2:ImportSnapshotpermisos. Si no es necesario restringir el acceso al usuario, puede usar laec2:*permisos para conceder acceso total a Amazon EC2. Los siguientes son los permisos que se pueden conceder o restringir para Amazon EC2 en su dispositivo. Cree un archivo de política con el contenido que se muestra:

{ "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":"*" } ] }

Cree una política con el archivo de políticas:

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

El siguiente es 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, adjunte la política a los usuarios de IAM que llamarán a la operación de API o 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 instantánea a Amazon S3 en su dispositivo

El siguiente paso es importar la instantánea a Amazon S3 de su dispositivo. El valor de S3Bucket debe ser el depósito que contiene tu imagen, S3Key debe ser la ruta del archivo de imagen en 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, consulteimport-snapshot.

Este comando no admite los siguiente modificadores.

  • [—datos del clientevalue]

  • [—client-tokenvalue]

  • [—ejecución en seco]

  • [--no-dry-run]

  • [—cifrado]

  • [—sin cifrar]

  • [--kms-key-id value]

  • [—tag-specificationsvalue]

ejemplo Ejemplo de salida

{ "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, Snowball Edge solo permite que se ejecute 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. Si lo desea también puede optar por cancelar la importación actual. Para evitar demoras, no reinicie el dispositivo Snowball Edge mientras la importación esté en curso. Si reinicias el dispositivo, la importación fallará y el progreso se eliminará cuando el dispositivo esté accesible. Para comprobar el estado del estado de la tarea de importación de instantáneas, utilice 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: Registro de la instantánea como AMI

Cuando la importación de instantáneas al dispositivo se realice correctamente, puede registrarla mediante laregister-imagecomando.

nota

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

Para obtener más información, consulteregister-image.

ejemplo Comando de ejemplo

aws ec2 register-image \ --name ami-01 \ --description my-ami-01 \ --block-device-mappings "[{\"DeviceName\": \"/dev/sda\",\"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 mapeo de dispositivos de bloques JSON. Para obtener más información, consulteasignación de dispositivos de bloque.

[ { "DeviceName": "/dev/sda", "Ebs": { "Encrypted": false, "DeleteOnTermination": true, "SnapshotId": "snapshot-id", "VolumeSize": 30 } } ]

ejemplo Ejemplo de salida

{ "ImageId": "s.ami-8de47d2e397937318" }

Paso 5: Lance una instancia desde la AMI

Para lanzar una instancia, consulterun-instances.

El valor image-id es la salida del paso anterior del registro:

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" }

Descripción de tareas importadas

Para ver el estado actual del progreso de la importación, puede ejecutar Amazon EC2describe-import-snapshot-taskscomando. Esta API admite la paginación y el filtrado entask-state.

ejemplo Comando de ejemplo

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

ejemplo Ejemplo de salida

{ "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

Esta API solo muestra la salida de las tareas que se completaron correctamente o se marcaron como eliminadas en los últimos 7 días. El filtrado solo es compatibleName=task-state,Values=active | deleting | deleted | completed

Este comando no admite los siguiente modificadores.

  • [—ejecución en seco]

  • [--no-dry-run]

Cancelar una tarea importación

Para cancelar una tarea de importación, ejecute elcancel-import-taskcomando.

ejemplo Comando de ejemplo

aws ec2 cancel-import-task --import-task-id import-task-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow

ejemplo Ejemplo de salida

{ "ImportTaskId": "s.import-snap-8234ef2a01cc3b0c6", "PreviousState": "active", "State": "deleting" }
nota

Solo se pueden cancelar las tareas que no estén en estado completado.

Este comando no admite los siguiente modificadores.

  • [—ejecución en seco]

  • [--no-dry-run]

Describir las instantáneas

Después de importar una instantánea, puede usar este comando para describirla. Para filtrar las instantáneas, puede pasarlas--snapshot-idscon el ID de instantánea de la respuesta de la tarea de importación anterior. Esta API admite la paginación y el filtro devolume-id,status, ystart-time.

ejemplo Comando de ejemplo

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

ejemplo Ejemplo de salida

{ "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 siguiente modificadores.

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

  • [—ejecución en seco]

  • [--no-dry-run]

Eliminación de una instantánea de su dispositivo

Para eliminar las instantáneas de su propiedad y que ya no necesita, puede usar ladelete-snapshotcomando.

ejemplo Comando de ejemplo

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

Snowball Edge no admite la eliminación de instantáneas que se encuentran en unPENDIENTEestado o si está designado como dispositivo raíz para una AMI.

Este comando no admite los siguiente modificadores.

  • [—ejecución en seco]

  • [--no-dry-run]

Anular el registro de una AMI

Para anular el registro de AMI que ya no necesite, puede ejecutar laderegister-imagecomando. Anular el registro de una AMI que se encuentra en elPendientestate no se admite actualmente.

ejemplo Comando de ejemplo

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

Este comando no admite los siguiente modificadores.

  • [—ejecución en seco]

  • [--no-dry-run]