Importation d'une image de machine virtuelle sur un appareil Snow Family - AWS Snowball Edge Guide du développeur

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Importation d'une image de machine virtuelle sur un appareil Snow Family

Vous pouvez utiliser le service VM Import/Export AWS CLI et le service VM pour importer une image de machine virtuelle (VM) sur l'appareil de la famille Snow en tant qu'Amazon Machine Image (AMI). Après avoir importé une image de machine virtuelle, enregistrez-la en tant qu'AMI et lancez-la en tant qu'instance compatible Amazon EC2.

Vous pouvez ajouter des AMI d'Amazon EC2 à l'appareil lorsque vous créez une tâche pour commander un appareil Snow Family. Utilisez cette procédure après avoir reçu l'appareil Snow Family. Pour plus d’informations, consultez Étape 2 : Choisissez vos options de calcul et de stockage.

Vous pouvez également l'utiliser AWS OpsHub pour télécharger le fichier image de la machine virtuelle. Pour plus d'informations, consultez la section Importation d'une image sur votre appareil en tant qu'AMI compatible avec Amazon EC2 dans ce guide.

Étape 1 : préparer l'image de la machine virtuelle et la télécharger sur l'appareil de la famille Snow

Préparez l'image de machine virtuelle en exportant une image de machine virtuelle à partir d'une AMI ou d'une instance Amazon EC2 à l' AWS Cloud aide de VM Import/Export ou en générant l'image de machine virtuelle localement à l'aide de la plate-forme de virtualisation de votre choix.

Pour exporter une instance Amazon EC2 sous forme d'image de machine virtuelle à l'aide de VM Import/Export, consultez la section Exportation d'une instance en tant que machine virtuelle à l'aide de VM Import/Export dans le guide de l'utilisateur de VM Import/Export. Pour exporter une AMI Amazon EC2 sous forme d'image de machine virtuelle à l'aide de VM Import/Export, consultez la section Exportation d'une machine virtuelle directement depuis une image machine Amazon (AMI) dans le guide de l'utilisateur de VM Import/Export.

Si vous générez une image de machine virtuelle à partir de votre environnement local, assurez-vous que l'image est configurée pour être utilisée en tant qu'AMI sur le périphérique de la famille Snow. Vous devrez peut-être configurer les éléments suivants, en fonction de votre environnement.

  • Configurez et mettez à jour le système d'exploitation.

  • Définissez un nom d'hôte.

  • Assurez-vous que le protocole NTP (Network Time Protocol) est configuré.

  • Incluez les clés publiques SSH, si nécessaire. Créez des copies locales des paires de clés. Pour plus d'informations, consultez Utiliser SSH pour vous connecter à vos instances de calcul sur un Snowball Edge.

  • Installez et configurez tous les logiciels que vous utiliserez sur l'appareil de la famille Snow.

Note

Tenez compte des limites suivantes lorsque vous préparez un instantané de disque pour un appareil de la gamme Snow.

  • Les appareils de la gamme Snow ne prennent actuellement en charge que l'importation d'instantanés au format d'image RAW.

  • Les appareils de la gamme Snow ne prennent actuellement en charge que l'importation de snapshots d'une taille comprise entre 1 Go et 1 To.

Téléchargement d'une image de machine virtuelle dans un compartiment Amazon S3 sur l'appareil de la famille Snow

Après avoir préparé une image de machine virtuelle, téléchargez-la dans un compartiment S3 sur le périphérique ou le cluster de la gamme Snow. Vous pouvez utiliser l'adaptateur S3 ou le stockage compatible Amazon S3 sur les appareils de la gamme Snow pour télécharger l'instantané.

Pour télécharger l'image de la machine virtuelle à l'aide de l'adaptateur S3
  • Utilisez la cp commande pour copier le fichier image de la machine virtuelle dans un compartiment de l'appareil.

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

    Pour plus d'informations, consultez la section AWS CLI Commandes prises en charge dans ce guide.

Pour télécharger l'image de la machine virtuelle à l'aide du stockage compatible Amazon S3 sur les appareils de la gamme Snow
  • Utilisez la put-object commande pour copier le fichier de capture d'écran dans un compartiment de l'appareil.

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

    Pour plus d'informations, consultez la section Utilisation d'objets S3 sur un appareil Snowball Edge.

Étape 2 : configurer les autorisations requises

Pour que l'importation soit réussie, vous devez configurer des autorisations pour VM Import/Export sur l'appareil de la famille Snow, Amazon EC2 et sur l'utilisateur.

Note

Les rôles de service et les politiques qui fournissent ces autorisations se trouvent sur l'appareil Snow Family.

Autorisations requises pour l'importation/exportation de machines virtuelles

Avant de démarrer le processus d'importation, vous devez créer un rôle IAM avec une politique de confiance qui permet à VM Import/Export sur le périphérique de la famille Snow d'assumer ce rôle. Des autorisations supplémentaires sont accordées au rôle pour permettre à VM Import/Export sur l'appareil d'accéder à l'image stockée dans le compartiment S3 de l'appareil.

Création d'un fichier json de politique de confiance

Voici un exemple de politique de confiance qui doit être attachée au rôle afin que VM Import/Export puisse accéder au snapshot qui doit être importé depuis le compartiment S3.

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

Créez un rôle avec le fichier json de politique de confiance

Le nom du rôle peut être vmimport. Vous pouvez le modifier en utilisant l'option --role-name dans la commande :

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

Voici un exemple de sortie de la create-role commande.

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

Création d'une politique pour le rôle

L'exemple de politique suivant dispose des autorisations minimales requises pour accéder à Amazon S3. Remplacez le nom du compartiment Amazon S3 par celui qui contient vos images. Pour un appareil Snowball Edge autonome, remplacez snow-id par votre identifiant de travail. Pour un cluster d'appareils, remplacez snow-id par l'ID du cluster. Vous pouvez également utiliser des préfixes pour affiner l'emplacement à partir duquel VM Import/Export peut importer des instantanés. Créez un fichier de politique JSON comme celui-ci.

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

Créez une politique avec le fichier de politique :

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

Voici un exemple de sortie de la commande 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" } }

Associer la politique au rôle

Associez une politique au rôle précédent et accordez des autorisations pour accéder aux ressources requises. Cela permet au service VM Import/Export local de télécharger le snapshot depuis Amazon S3 sur l'appareil.

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

Autorisations requises par l'appelant

Outre le rôle que doit assumer le Snowball Edge VM Import/Export, vous devez également vous assurer que l'utilisateur dispose des autorisations lui permettant de transmettre le rôle à VMIE. Si vous utilisez l'utilisateur root par défaut pour effectuer l'importation, celui-ci dispose déjà de toutes les autorisations requises. Vous pouvez donc ignorer cette étape et passer à l'étape 3.

Attachez les deux autorisations IAM suivantes à l'utilisateur qui effectue l'importation.

  • pass-role

  • get-role

Création d'une politique pour le rôle

Voici un exemple de politique qui permet à un utilisateur d'exécuter les pass-role actions get-role et pour le rôle 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" } } } ] }

Créez une politique à l'aide du fichier de politique :

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

Voici un exemple de sortie de la commande 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" } }

Une fois la politique générée, associez-la aux utilisateurs IAM qui appelleront l'API ou l'opération CLI Amazon EC2 pour importer le snapshot.

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

Autorisations requises pour appeler les API Amazon EC2 sur votre appareil

Pour importer un instantané, l'utilisateur IAM doit disposer des ec2:ImportSnapshot autorisations nécessaires. S'il n'est pas nécessaire de restreindre l'accès à l'utilisateur, vous pouvez utiliser les ec2:* autorisations pour accorder un accès complet à Amazon EC2. Voici les autorisations qui peuvent être accordées ou restreintes pour Amazon EC2 sur votre appareil. Créez un fichier de régulation dont le contenu est affiché :

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

Créez une politique avec le fichier de politique :

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

Voici un exemple de sortie de la commande 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" } }

Une fois la politique générée, associez-la aux utilisateurs IAM qui appelleront l'API ou l'opération CLI Amazon EC2 pour importer le snapshot.

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

Étape 3 : Importer l'image de la machine virtuelle sous forme de capture instantanée sur l'appareil

L'étape suivante consiste à importer l'image de la machine virtuelle sous forme de capture instantanée sur le périphérique. La valeur du S3Bucket paramètre est le nom du compartiment contenant l'image de la machine virtuelle. La valeur du S3Key paramètre est le chemin d'accès au fichier image de la machine virtuelle dans ce compartiment.

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

Pour plus d'informations, consultez import-snapshot dans la référence des AWS CLI commandes.

Cette commande ne prend pas en charge les commutateurs suivants.

  • [--données-clientvalue]

  • [--jeton clientvalue]

  • [--fonctionnement à sec]

  • [--no-dry-run]

  • [--crypté]

  • [--non crypté]

  • [--kms-key-id value]

  • [--tag-specificationsvalue]

Exemple sortie de import-snapshot commande
{ "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" } } }
Note

Les appareils Snow Family n'autorisent actuellement qu'une seule tâche d'importation active à la fois, par appareil. Pour démarrer une nouvelle tâche d'importation, attendez que la tâche en cours soit terminée ou choisissez un autre nœud disponible dans un cluster. Vous pouvez également choisir d'annuler l'importation en cours si vous le souhaitez. Pour éviter tout retard, ne redémarrez pas l'appareil Snow Family pendant que l'importation est en cours. Si vous redémarrez l'appareil, l'importation échouera et la progression sera supprimée lorsque l'appareil sera accessible. Pour vérifier l'état de votre tâche d'importation de snapshots, utilisez la commande suivante :

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

Étape 4 : enregistrer le snapshot en tant qu'AMI

Lorsque l'importation du snapshot sur l'appareil est réussie, vous pouvez l'enregistrer à l'aide de la register-image commande.

Note

Vous ne pouvez enregistrer une AMI que lorsque tous ses instantanés sont disponibles.

Pour plus d'informations, voir register-image dans la référence des AWS CLI commandes.

Exemple de la register-image commande
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

Voici un exemple de mappage de périphériques par blocs au format JSON. Pour plus d'informations, consultez le block-device-mapping paramètre de register-image dans la référence des AWS CLI commandes.

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

Étape 5 : Lancer une instance depuis l'AMI

Pour lancer une instance, consultez run-instances dans la référence des AWS CLI commandes.

La valeur du image-id paramètre est la valeur du ImageId nom en sortie de la register-image commande.

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

Vous pouvez également l'utiliser AWS OpsHub pour lancer l'instance. Pour plus d'informations, consultez la section Lancement d'une instance compatible avec Amazon EC2 dans ce guide.

Actions AMI supplémentaires

Vous pouvez utiliser des AWS CLI commandes supplémentaires pour surveiller l'état d'importation des instantanés, obtenir des informations sur les instantanés importés, annuler l'importation d'un instantané et supprimer ou désenregistrer des instantanés après leur importation.

Surveillance de l'état d'importation des instantanés

Pour connaître l'état actuel de la progression de l'importation, vous pouvez exécuter la commande Amazon EC2. describe-import-snapshot-tasks Cette commande prend en charge la pagination et le task-state filtrage sur.

Exemple de la describe-import-snapshot-tasks commande
aws ec2 describe-import-snapshot-tasks --import-task-ids id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
Exemple de sortie describe-import-snapshot-tasks de commande
{ "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" } } } ] }
Note

Cette commande affiche uniquement le résultat des tâches terminées avec succès ou marquées comme supprimées au cours des 7 derniers jours. Le filtrage ne prend en charge queName=task-state, Values=active | deleting | deleted | completed

Cette commande ne prend pas en charge les paramètres suivants.

  • [--fonctionnement à sec]

  • [--no-dry-run]

Annulation d'une tâche d'importation

Pour annuler une tâche d'importation, exécutez la cancel-import-task commande.

Exemple de la cancel-import-task commande
aws ec2 cancel-import-task --import-task-id import-task-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
Exemple de sortie cancel-import-task de commande
{ "ImportTaskId": "s.import-snap-8234ef2a01cc3b0c6", "PreviousState": "active", "State": "deleting" }
Note

Seules les tâches qui ne sont pas terminées peuvent être annulées.

Cette commande ne prend pas en charge les paramètres suivants.

  • [--fonctionnement à sec]

  • [--no-dry-run]

Décrire les instantanés

Après l'importation d'un instantané, vous pouvez utiliser cette commande pour le décrire. Pour filtrer les instantanés, vous pouvez les transmettre snapshot-ids avec l'ID de capture indiqué dans la réponse à la tâche d'importation précédente. Cette commande prend en charge la pagination et le filtrage sur volume-idstatus, etstart-time.

Exemple de describe-snapshots commande
aws ec2 describe-snapshots --snapshot-ids snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
Exemple de sortie describe-snapshots de commande
{ "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 } ] }

Cette commande ne prend pas en charge les paramètres suivants.

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

  • [--fonctionnement à sec]

  • [--no-dry-run]

Supprimer un instantané d'un appareil Snow Family

Pour supprimer des instantanés dont vous êtes propriétaire et dont vous n'avez plus besoin, vous pouvez utiliser la delete-snapshot commande.

Exemple de la delete-snapshot commande
aws ec2 delete-snapshot --snapshot-id snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
Note

Snowball Edge ne prend pas en charge la suppression de snapshots dont l'état est EN ATTENTE ou s'il est désigné comme périphérique racine pour une AMI.

Cette commande ne prend pas en charge les paramètres suivants.

  • [--fonctionnement à sec]

  • [--no-dry-run]

Annulation de l'enregistrement d'un AMI

Pour désenregistrer les AMI dont vous n'avez plus besoin, vous pouvez exécuter la deregister-image commande. L'annulation de l'enregistrement d'une AMI dont l'état est En attente n'est pas prise en charge actuellement.

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

Cette commande ne prend pas en charge les paramètres suivants.

  • [--fonctionnement à sec]

  • [--no-dry-run]