AWS Snowball Edge不再向新客户提供。新客户应探索AWS DataSync
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
将虚拟机映像导入 Snowball Edge 设备
您可以使用AWS CLI和虚拟机 Import/Export 服务将虚拟机 (VM) 映像作为亚马逊系统映像 (AMI) 导入到 Snowball Edge 设备。导入虚拟机映像后,将该映像注册为 AMI 并将其作为 Amazon EC2-compatible 实例启动。
在创建订购 Snowball Edge 设备的任务时,您可以将 Amazon EC2 中的 AMI 添加到设备中。收到 Snowball Edge 设备后,请使用此步骤。有关更多信息,请参阅 选择计算和存储选项。
您也可以使用AWS OpsHub上传虚拟机映像文件。有关更多信息,请参阅本指南中的将图像作为 Amazon EC2-compatible AMI 导入到您的设备中。
主题
第 1 步:准备虚拟机镜像并将其上传到 Snowball Edge 设备
通过从 Amazon EC2 AMI 或正在使用的虚拟机中的实例导出虚拟机映像, Import/Export 或者AWS Cloud使用您选择的虚拟化平台在本地生成虚拟机映像,来准备虚拟机映像。
要使用虚拟机将 Amazon EC2 实例导出为虚拟机映像 Import/Export,请参阅虚拟机 Import/Export 用户指南 Import/Export中的使用虚拟机将实例导出为虚拟机。要使用虚拟机将 Amazon EC2 AMI 导出为虚拟机映像 Import/Export,请参阅虚拟机 Import/Export 用户指南中的直接从亚马逊系统映像 (AMI) 导出虚拟机。
如果从本地环境生成虚拟机映像,请确保在 Snowball Edge 设备上将该映像配置为用作 AMI。您可能需要根据环境配置以下项。
配置和更新操作系统。
设置主机名。
确保配置了网络时间协议(NTP)。
如有必要,包括 SSH 公钥。制作密钥对的本地副本。有关更多信息,请参阅在 Snowball Edge 上使用 SSH 连接到您的计算实例。
安装和配置您将在 Snowball Edge 设备上使用的任何软件。
注意
为 Snowball Edge 设备准备磁盘快照时,请注意以下限制。
-
Snowball Edge 目前仅支持导入 RAW 图像格式的快照。
-
Snowball Edge 目前仅支持导入大小在 1 GB 到 1 TB 之间的快照。
将虚拟机映像上传到 Snowball Edge 设备上的 Amazon S3 存储桶
准备好虚拟机映像后,将其上传到 Snowball Edge 设备或集群上的 S3 存储桶。你可以使用 Snowball Edge 上的 S3 适配器或 Amazon S3 兼容存储空间来上传快照。
使用 S3 Adapter 上传虚拟机映像
使用
cp命令将虚拟机映像文件复制到设备上的存储桶。aws s3 cpimage-paths3://S3-bucket-name--endpoint http://S3-object-API-endpoint:443--profileprofile-name有关更多信息,请参阅本指南中的支持的AWS CLI命令。
在 Snowball Edge 上使用兼容 Amazon S3 的存储空间上传虚拟机映像
使用
put-object命令将快照文件复制到设备上的存储桶。aws s3api put-object --bucketbucket-name--keypath-to-snapshot-file--bodysnapshot-file--endpoint-urls3api-endpoint-ip--profileyour-profile有关更多信息,请参阅在 Snowball Edge 设备上使用 S3 对象。
第 2 步:在 Snowball Edge 上设置所需的权限
要成功导入,您必须在 Snowball Edge 设备、Amazon EC2 和用户 Import/Export 上为虚拟机设置权限。
注意
提供这些权限的服务角色和策略位于 Snowball Edge 设备上。
在 Snowball Ed Import/Export ge 上使用虚拟机所需的权限
在开始导入过程之前,必须使用允许 Snowball Edge 设备 Import/Export 上的虚拟机担任该角色的信任策略创建 IAM 角色。向该角色授予了其他权限,允许设备 Import/Export 上的虚拟机访问存储在设备上 S3 存储桶中的映像。
创建信任策略 json 文件
以下是需要附加到角色的信任策略示例,这样 VM Import/Export 才能访问需要从 S3 存储桶导入的快照。
通过信任策略 json 文件创建角色
角色名称可以是 vmimport。您可以使用命令中的 --role-name 选项对其进行更改:
aws iam create-role --role-namerole-name--assume-role-policy-document file:///trust-policy-json-path--endpoint http://snowball-ip:6078 --region snow --profileprofile-name
以下是 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" } }
为角色创建策略
以下示例策略具有访问 Amazon S3 所需的最低权限。将 Amazon S3 存储桶名称更改为包含您映像的名称。对于独立的 Snowball Edge 设备,请snow-id更改您的作业 ID。对于设备集群,snow-id请更改为集群 ID。您还可以使用前缀进一步缩小虚拟机 Import/Export 可以从中导入快照的位置。创建类似的策略 json 文件。
使用策略文件创建策略:
aws iam create-policy --policy-namepolicy-name--policy-document file:///policy-json-file-path--endpoint http://snowball-ip:6078 --region snow --profileprofile-name
以下是 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" } }
将策略附加到角色
将策略附加到上述角色并授予访问所需资源的权限。这允许本地虚拟机 Import/Export 服务从设备上的 Amazon S3 下载快照。
aws iam attach-role-policy --role-namerole-name--policy-arn arn:aws:iam::123456789012:policy/policy-name--endpoint http://snowball-ip:6078 --region snow --profileprofile-name
来电者在 Snowball Edge 上所需的权限
除了 Snowball Edge 虚拟机 Import/Export 要扮演的角色外,您还必须确保用户拥有允许他们将角色传递给 VMIE 的权限。如果您使用默认根用户执行导入,根用户已拥有所需的所有权限,因此您可以跳过此步骤,转到第 3 步。
将以下两个 IAM 权限附加到正在进行导入的用户。
-
pass-role -
get-role
为角色创建策略
以下是允许用户对 IAM 角色执行 get-role 和 pass-role 操作的示例策略。
使用策略文件创建策略:
aws iam create-policy --policy-namepolicy-name--policy-document file:///policy-json-file-path--endpoint http://snowball-ip:6078 --region snow --profileprofile-name
以下是 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" } }
策略生成后,将策略附加到将调用 Amazon EC2 API 或 CLI 操作的 IAM 用户来导入快照。
aws iam attach-user-policy --user-nameyour-user-name--policy-arn arn:aws:iam::123456789012:policy/policy-name--endpoint http://snowball-ip:6078 --region snow --profileprofile-name
在 Snowball Edge 上调用 Amazon EC2 API 所需的权限
要导入快照,IAM 用户必须具有 ec2:ImportSnapshot 权限。如果不需要限制用户访问权限,您可以使用 ec2:* 权限授予完全的 Amazon EC2 访问权限。以下是可以在您的设备上授予或限制的 Amazon EC2 权限。创建包含所示内容的策略文件:
使用策略文件创建策略:
aws iam create-policy --policy-namepolicy-name--policy-document file:///policy-json-file-path--endpoint http://snowball-ip:6078 --region snow --profileprofile-name
以下是 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" } }
策略生成后,将策略附加到将调用 Amazon EC2 API 或 CLI 操作的 IAM 用户来导入快照。
aws iam attach-user-policy --user-nameyour-user-name--policy-arn arn:aws:iam::123456789012:policy/policy-name--endpoint http://snowball-ip:6078 --region snow --profileprofile-name
步骤 3:将虚拟机映像作为快照导入 Snowball Edge
下一步是在设备上将虚拟机映像作为快照导入。S3Bucket 参数的值是包含虚拟机映像的存储桶的名称。S3Key 参数的值是该存储桶中虚拟机映像文件的路径。
aws ec2 import-snapshot --disk-container "Format=RAW,UserBucket={S3Bucket=bucket-name,S3Key=image-file}" --endpoint http://snowball-ip:8008 --region snow --profileprofile-name
有关更多信息,请参阅《AWS CLI命令参考》中的 import-snap
此命令不支持以下开关。
[--client-data
value][--client-token
value][--dry-run]
[--no-dry-run]
[--encrypted]
[--no-encrypted]
[--kms-key-id
value][--tag-specifications
value]
例导入快照命令的输出
{ "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" } } }
注意
Snowball Edge 目前只允许每台设备一次运行一个活跃的导入作业。要启动新的导入任务,要么等待当前任务完成,要么在集群中选择另一个可用节点。如果需要,您也可以选择取消当前的导入。为防止延迟,请勿在导入过程中重启 Snowball Edge 设备。如果您重启设备,则导入将失败,并且进度将在设备可以访问时删除。要查看快照导入任务的状态,请使用以下命令:
aws ec2 describe-import-snapshot-tasks --import-task-idsid--endpoint http://snowball-ip:8008 --region snow --profileprofile-name
步骤 4:在 Snowball Edge 上将快照注册为 AMI
成功将快照导入设备后,您可以使用 register-image 命令对其进行注册。
注意
只有当 AMI 的所有快照都可用时,您才能注册 AMI。
有关更多信息,请参阅《AWS CLI命令参考》中的 register-image
例 regi ster-imag e 命令的
aws ec2 register-image \ --nameami-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 \ --endpoint http://snowball-ip:8008 \ --region snow \ --profileprofile-name
以下是块设备映射 JSON 的示例。有关更多信息,请参阅《命令参考》中的 register-image 的块设备映射参数
[ { "DeviceName": "/dev/sda", "Ebs": { "Encrypted": false, "DeleteOnTermination": true, "SnapshotId": "snapshot-id", "VolumeSize": 30 } } ]
例 regi ster-imag e 命令的
{ "ImageId": "s.ami-8de47d2e397937318" }
步骤 5:从 Snowball Edge 上的 AMI 启动实例
要启动实例,请参阅《AWS CLI命令参考》中的 run-
image-id 参数的值是作为 register-image 命令输出的 ImageId 名称的值。
aws ec2 run-instances --image-idimage-id--instance-typeinstance-type--endpoint http://snowball-ip:8008 --region snow --profileprofile-name
{ "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" }
注意
您也可以AWS OpsHub使用启动实例。有关更多信息,请参阅本指南中的启动 Amazon EC2-compatible 实例。
Snowball Edge 的其他 AMI 操作
您可以使用其他AWS CLI命令来监控快照导入状态、获取已导入快照的详细信息、取消导入快照以及在快照导入后删除或取消注册快照。
在 Snowball Edge 上监控快照导入状态
要查看导入进度的当前状态,您可以运行 Amazon EC2 describe-import-snapshot-tasks 命令。此命令支持在 task-state 上进行分页和筛选。
例 describe-import-snapshot-t asks 命令的
aws ec2 describe-import-snapshot-tasks --import-task-idsid--endpoint http://snowball-ip:8008 --region snow --profileprofile-name
例描述导入快照任务的命令输出
{ "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" } } } ] }
注意
此命令仅显示过去 7 天内成功完成或标记为已删除的任务的输出。筛选仅支持 Name=task-state,Values=active | deleting | deleted |
completed
此命令不支持以下参数。
[--dry-run]
[--no-dry-run]
取消 Snowball Edge 上的导入任务
要取消导入任务,请运行 cancel-import-task 命令。
例取消导入任务命令的
aws ec2 cancel-import-task --import-task-idimport-task-id--endpoint http://snowball-ip:8008 --region snow --profileprofile-name
例的取消导入任务命令输出
{ "ImportTaskId": "s.import-snap-8234ef2a01cc3b0c6", "PreviousState": "active", "State": "deleting" }
注意
只能取消未处于已完成状态的任务。
此命令不支持以下参数。
[--dry-run]
[--no-dry-run]
描述 Snowball Edge 上的快照
导入快照后,您可以使用此命令对其进行描述。要筛选快照,您可以使用先前导入任务响应中的快照 ID 传入 snapshot-ids。此命令支持在 volume-id、status 和 start-time 上进行分页和筛选。
例 of 描述快照命令
aws ec2 describe-snapshots --snapshot-idssnapshot-id--endpoint http://snowball-ip:8008 --region snow --profileprofile-name
例的描述快照命令输出
{ "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 } ] }
此命令不支持以下参数。
[--restorable-by-user-ids
value][--dry-run]
[--no-dry-run]
从 Snowball Edge 设备中删除快照
要删除您拥有但不再需要的快照,您可以使用 delete-snapshot 命令。
例删除快照命令的
aws ec2 delete-snapshot --snapshot-idsnapshot-id--endpoint http://snowball-ip:8008 --region snow --profileprofile-name
注意
Snowball Edge 不支持删除处于待处理状态或被指定为 AMI 根设备的快照。
此命令不支持以下参数。
-
[--dry-run]
-
[--no-dry-run]
在 Snowball Edge 上注销 AMI
要取消注册不再需要的 AMI,您可以运行 deregister-image 命令。目前不支持取消注册处于待处理状态的 AMI。
例 der egister-imag e 命令的
aws ec2 deregister-image --image-idimage-id--endpoint http://snowball-ip:8008 --region snow --profileprofile-name
此命令不支持以下参数。
[--dry-run]
[--no-dry-run]