Importação de uma imagem de máquina virtual para um dispositivo Snowball Edge - AWS Snowball Edge Guia do desenvolvedor

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Importação de uma imagem de máquina virtual para um dispositivo Snowball Edge

Você pode usar o serviço AWS CLI e o VM Import/Export para importar uma imagem de máquina virtual (VM) para o dispositivo Snowball Edge como uma Amazon Machine Image (AMI). Depois de importar uma imagem de VM, registre a imagem como uma AMI e inicie-a como uma instância compatível com a Amazon EC2.

Você pode adicionar AMIs da Amazon EC2 ao dispositivo ao criar um trabalho para solicitar um dispositivo Snowball Edge. Use esse procedimento depois de receber o dispositivo Snowball Edge. Para obter mais informações, consulte Escolher opções de computação e de armazenamento.

Você também pode usar AWS OpsHub para carregar o arquivo de imagem da VM. Para obter mais informações, consulte Importar uma imagem para o seu dispositivo como uma EC2 AMI compatível com a Amazon neste guia.

Etapa 1: Preparar a imagem da VM e enviá-la para o dispositivo Snowball Edge

Prepare a imagem da VM exportando uma imagem da VM de uma EC2 AMI ou instância da Amazon Nuvem AWS usando o VM Import/Export ou gerando a imagem da VM localmente usando a plataforma de virtualização de sua escolha.

Para exportar uma EC2 instância da Amazon como uma imagem de VM usando o VM Import/Export, consulte Exportar uma instância como uma VM usando o VM Import/Export na VM, Import/Export User Guide. To export an Amazon EC2 AMI as a VM image using VM Import/Export consulte Exportar uma VM diretamente de uma imagem de máquina da Amazon (AMI) no Guia do usuário do VM Import/Export.

Se estiver gerando uma imagem de VM do seu ambiente local, certifique-se de que a imagem esteja configurada para uso como AMI no dispositivo Snowball Edge. Talvez seja necessário configurar os itens a seguir, dependendo do ambiente.

  • Configure e atualize o sistema operacional.

  • Defina um nome do host.

  • O NTP (Network Time Protocol) deverá estar configurado.

  • Inclua chaves públicas SSH, se necessário. Faça cópias locais dos pares de chaves. Para ter mais informações, consulte Using SSH to Connect to Your Compute Instances on a Snowball Edge.

  • Instale e configure qualquer software que você usará no dispositivo Snowball Edge.

nota

Esteja ciente das seguintes limitações ao preparar um instantâneo de disco para um dispositivo Snowball Edge.

  • No momento, o Snowball Edge suporta somente a importação de instantâneos que estejam no formato de imagem RAW.

  • Atualmente, o Snowball Edge só oferece suporte à importação de instantâneos com tamanhos de 1 GB a 1 TB.

Fazer upload de uma imagem de VM para um bucket do Amazon S3 no dispositivo Snowball Edge

Depois de preparar uma imagem de VM, carregue-a em um bucket do S3 no dispositivo ou cluster Snowball Edge. Você pode usar o adaptador S3 ou o armazenamento compatível com Amazon S3 no Snowball Edge para fazer o upload do snapshot.

Como fazer upload da imagem de máquina virtual usando o adaptador do S3
  • Use o comando cp para copiar o arquivo da imagem de VM em um bucket no dispositivo.

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

    Para obter mais informações, consulte AWS CLI Comandos compatíveis neste guia.

Para carregar a imagem da VM usando armazenamento compatível com Amazon S3 no Snowball Edge
  • Use o comando put-object para copiar o arquivo de snapshot em um bucket no 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 ter mais informações, consulte Working with S3 objects on a Snowball Edge device.

Etapa 2: Configurar as permissões necessárias no Snowball Edge

Para que a importação seja bem-sucedida, você deve configurar permissões para o VM Import/Export no dispositivo Snowball Edge, na Amazon EC2 e no usuário.

nota

As funções e políticas de serviço que fornecem essas permissões estão localizadas no dispositivo Snowball Edge.

Permissões necessárias para importar/exportar VM em um Snowball Edge

Antes de iniciar o processo de importação, você deve criar uma função do IAM com uma política de confiança que permita que a VM Import/Export on the Snowball Edge device to assume the role. Additional permissions are given to the role to allow VM Import/Export no dispositivo acesse a imagem armazenada no bucket do S3 no dispositivo.

Criar um arquivo json de política de confiança

Veja a seguir um exemplo de política de confiança que deve ser anexada ao perfil para que o VM Import/Export possa acessar o snapshot que precisa ser importado do bucket do S3.

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

Criar um perfil com o arquivo json da política de confiança

O nome do perfil pode ser vmimport. É possível alterá-lo usando a opção --role-name no 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

Veja um exemplo de saída do 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" } }

Criar uma política para a função

O exemplo de política a seguir tem as permissões mínimas necessárias para acessar o Amazon S3. Altere o nome do bucket do Amazon S3 para aquele que tem as imagens. Para um dispositivo Snowball Edge independente, snow-id mude para sua ID de trabalho. Para um cluster de dispositivos, altere snow-id para o ID do cluster. Também é possível usar prefixos para restringir ainda mais o local de onde o VM Import/Export pode importar snapshots. Crie um arquivo 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/*" ] } ] }

Crie uma política com o arquivo 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

Veja a seguir um exemplo de saída do 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" } }

Anexar a política ao perfil

Anexe uma política ao perfil anterior e conceda permissões para acessar os recursos necessários. Isso permite que o serviço local VM Import/Export baixe o snapshot do Amazon S3 no 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

Permissões exigidas pelo chamador em um Snowball Edge

Além do perfil a ser assumido pelo Snowball Edge VM Import/Export, também é necessário garantir que o usuário tenha as permissões que autorizem a transmissão da função para o VMIE. Se você usar o usuário raiz padrão para realizar a importação, o qual já tem todas as permissões necessárias, poderá ignorar esta etapa e ir para a 3.

Anexe as duas permissões do IAM a seguir ao usuário que está fazendo a importação.

  • pass-role

  • get-role

Criar uma política para a função

Veja um exemplo de política que permite ao usuário realizar as ações get-role e pass-role para o perfil do 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" } } } ] }

Crie uma política com o arquivo 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

Veja a seguir um exemplo de saída do 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" } }

Depois que a política for gerada, anexe a política aos usuários do IAM que chamarão a operação de EC2 API ou CLI da Amazon para importar o 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

Permissões necessárias para ligar para a Amazon EC2 APIs em um Snowball Edge

Para importar um snapshot, o usuário do IAM precisa ter as permissões ec2:ImportSnapshot. Se não for necessário restringir o acesso ao usuário, você pode usar as ec2:* permissões para conceder EC2 acesso total à Amazon. A seguir estão as permissões que podem ser concedidas ou restringidas para a Amazon EC2 em seu dispositivo. Crie um arquivo de política com o conteúdo mostrado:

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

Crie uma política com o arquivo 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

Veja a seguir um exemplo de saída do 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" } }

Depois que a política for gerada, anexe a política aos usuários do IAM que chamarão a operação de EC2 API ou CLI da Amazon para importar o 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

Etapa 3: importar a imagem da VM como um instantâneo no Snowball Edge

A próxima etapa é importar a imagem de VM como um snapshot no dispositivo. O valor do parâmetro S3Bucket é o nome do bucket que contém a imagem de VM. O valor do parâmetro S3Key é o caminho para o arquivo da imagem de VM nesse bucket.

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 obter mais informações, consulte import-snapshot na Referência de Comandos. AWS CLI

Esse comando não é compatível com as opções a seguir.

  • [--client-data value]

  • [--client-token value]

  • [--dry-run]

  • [--no-dry-run]

  • [--encrypted]

  • [--no-encrypted]

  • [--kms-key-id value]

  • [--tag-specifications value]

exemplo saída do 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

Atualmente, o Snowball Edge permite que apenas uma tarefa de importação ativa seja executada por vez, por dispositivo. Para iniciar uma nova tarefa de importação, aguarde a conclusão da tarefa atual ou selecione outro nó disponível em um cluster. Também é possível optar por cancelar a importação atual, se desejar. Para evitar atrasos, não reinicie o dispositivo Snowball Edge enquanto a importação estiver em andamento. Se você reinicializar o dispositivo, a importação falhará e o andamento será excluído quando o dispositivo estiver acessível. Para conferir o status de importação do snapshot, use o seguinte comando:

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

Etapa 4: registrar o snapshot como uma AMI no Snowball Edge

Quando a importação do snapshot para o dispositivo for bem-sucedida, você poderá registrá-lo com o comando register-image.

nota

Será possível registrar uma AMI apenas quando todos os snapshots estiverem disponíveis.

Para obter mais informações, consulte register-image na Referência de AWS CLI Comandos.

exemplo do 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

Veja a seguir um exemplo de mapeamento de dispositivos de blocos JSON. Para obter mais informações, consulte o block-device-mapping parâmetro de register-image na Referência de AWS CLI Comandos.

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

Etapa 5: executar uma instância da AMI no Snowball Edge

Para iniciar uma instância, consulte run-instances na Referência de AWS CLI comandos.

O valor do parâmetro image-id é o valor do nome ImageId como saída do comando register-image.

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

Você também pode usar AWS OpsHub para iniciar a instância. Para obter mais informações, consulte Lançamento de uma instância EC2 compatível com a Amazon neste guia.

Ações adicionais da AMI para um Snowball Edge

Você pode usar AWS CLI comandos adicionais para monitorar o status de importação de instantâneos, obter detalhes sobre instantâneos que foram importados, cancelar a importação de um instantâneo e excluir ou cancelar o registro de instantâneos após a importação.

Monitorando o status de importação de instantâneos em um Snowball Edge

Para ver o estado atual do progresso da importação, você pode executar o EC2 describe-import-snapshot-tasks comando Amazon. Esse comando é compatível com a paginação e a filtragem no task-state.

exemplo do 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
exemplo da saída do 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

Esse comando mostra apenas a saída de tarefas que foram concluídas com êxito ou marcadas como excluídas nos últimos sete dias. A filtragem é compatível apenas com Name=task-state e Values=active | deleting | deleted | completed.

Esse comando não é compatível com os parâmetros a seguir.

  • [--dry-run]

  • [--no-dry-run]

Cancelamento de uma tarefa de importação em um Snowball Edge

Para cancelar uma tarefa de importação, execute o comando cancel-import-task.

exemplo do 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
exemplo da saída do comando cancel-import-task
{ "ImportTaskId": "s.import-snap-8234ef2a01cc3b0c6", "PreviousState": "active", "State": "deleting" }
nota

Somente tarefas não concluídas podem ser canceladas.

Esse comando não é compatível com os parâmetros a seguir.

  • [--dry-run]

  • [--no-dry-run]

Descrevendo instantâneos em um Snowball Edge

Após a importação de um snapshot, é possível usar esse comando para descrevê-lo. Para filtrar os snapshots, é possível transmiti-los em snapshot-ids com o ID do snapshot da resposta da tarefa de importação anterior. Esse comando é compatível com a paginação e a filtragem em volume-id, status e start-time.

exemplo do comando describe-snapshots
aws ec2 describe-snapshots --snapshot-ids snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
exemplo da saída do 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 } ] }

Esse comando não é compatível com os parâmetros a seguir.

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

  • [--dry-run]

  • [--no-dry-run]

Excluindo um snapshot de um dispositivo Snowball Edge

Para remover snapshots desnecessários, é possível usar o comando delete-snapshot.

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

O Snowball Edge não é compatível com a exclusão de snapshots que estejam em estado PENDENTE ou que tenham sido designados como dispositivo raiz para uma AMI.

Esse comando não é compatível com os parâmetros a seguir.

  • [--dry-run]

  • [--no-dry-run]

Cancelando o registro de uma AMI em um Snowball Edge

Para cancelar o registro AMIs que você não precisa mais, execute o deregister-image comando. O cancelamento do registro de uma AMI no estado Pendente não é aceito no momento.

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

Esse comando não é compatível com os parâmetros a seguir.

  • [--dry-run]

  • [--no-dry-run]