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