本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將虛擬機器映像匯入 Snowball Edge 裝置
您可以使用 AWS CLI 和 VM Import/Export 服務,將虛擬機器 (VM) 映像匯入 Snowball Edge 裝置,做為 Amazon Machine Image (AMI)。匯入 VM 映像之後,將映像註冊為 AMI,並將其啟動為與 Amazon EC2-compatible執行個體。
建立任務以訂購 Snowball Edge 裝置時,您可以將 Amazon EC2 的 AMIs 新增至裝置。收到 Snowball Edge 裝置後,請使用此程序。如需詳細資訊,請參閱選擇您的運算和儲存選項。
您也可以使用 AWS OpsHub 上傳 VM 映像檔案。如需詳細資訊,請參閱本指南中的將映像匯入裝置做為與 Amazon EC2-compatible AMI。
主題
步驟 1:準備 VM 映像並將其上傳至 Snowball Edge 裝置
AWS 雲端 使用 VM Import/Export 從 中的 Amazon EC2 AMI 或執行個體匯出 VM 映像,或使用您選擇的虛擬化平台在本機產生 VM 映像,以準備 VM 映像。
若要使用 VM Import/Export 將 Amazon EC2 執行個體匯出為 VM 映像,請參閱《VM Import/Export 使用者指南》中的使用 VM Import/Export 將執行個體匯出為 VM。若要使用 VM Import/Export 將 Amazon EC2 AMI 匯出為 VM 映像,請參閱《VM Import/Export 使用者指南》中的直接從 Amazon Machine Image (AMI) 匯出 VM。
如果從本機環境產生 VM 映像,請確定映像已設定為在 Snowball Edge 裝置上用作 AMI。視您的環境而定,您可能需要設定下列項目。
設定和更新作業系統。
設定主機名稱。
確保已設定網路時間通訊協定 (NTP)。
視需要包含 SSH 公有金鑰。製作金鑰對的本機副本。如需詳細資訊,請參閱使用 SSH 連線到 Snowball Edge 上的運算執行個體。
安裝和設定您將在 Snowball Edge 裝置上使用的任何軟體。
注意
準備 Snowball Edge 裝置的磁碟快照時,請注意下列限制。
-
Snowball Edge 目前僅支援匯入 RAW 映像格式的快照。
-
Snowball Edge 目前僅支援匯入大小從 1 GB 到 1 TB 的快照。
將 VM 映像上傳至 Snowball Edge 裝置上的 Amazon S3 儲存貯體
準備 VM 映像後,將其上傳至 Snowball Edge 裝置或叢集上的 S3 儲存貯體。您可以使用 S3 Edge 上的 S3 轉接器或 Amazon S3 相容儲存來上傳快照。
使用 S3 轉接器上傳虛擬機器映像
使用
cp
命令將 VM 映像檔案複製到裝置上的儲存貯體。aws s3 cp
image-path
s3://S3-bucket-name
--endpoint http://S3-object-API-endpoint:443
--profileprofile-name
如需詳細資訊,請參閱本指南中支援的 AWS CLI 命令。
在 Snowball Edge 上使用 Amazon S3 相容儲存上傳 VM 映像
使用
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:在 Snowball Edge 上設定必要的許可
若要讓匯入成功,您必須在 Snowball Edge 裝置、Amazon EC2 和使用者上設定 VM Import/Export 的許可。
注意
提供這些許可的服務角色和政策位於 Snowball Edge 裝置上。
Snowball Edge 上的 VM Import/Export 所需的許可
您必須先建立具有信任政策的 IAM 角色,允許 Snowball Edge 裝置上的 VM Import/Export 擔任該角色,才能開始匯入程序。角色會獲得其他許可,以允許裝置上的 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 上的呼叫者所需的許可
除了要擔任的 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" } }
產生政策後,請將政策連接至 IAM 使用者,他們會呼叫 Amazon EC2 API 或 CLI 操作來匯入快照。
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
在 Snowball Edge 上呼叫 Amazon EC2 APIs 所需的許可
若要匯入快照,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" } }
產生政策後,請將政策連接至 IAM 使用者,他們會呼叫 Amazon EC2 API 或 CLI 操作來匯入快照。
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:在 Snowball Edge 上將 VM 映像匯入為快照
下一個步驟是在裝置上將 VM 映像匯入為快照。S3Bucket
參數的值是包含 VM 映像的儲存貯體名稱。S3Key
參數的值是此儲存貯體中 VM 映像檔案的路徑。
aws ec2 import-snapshot --disk-container "Format=RAW,UserBucket={S3Bucket=
bucket-name
,S3Key=image-file
}" --profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
如需詳細資訊,請參閱 AWS CLI 命令參考中的 Import-snapshot
此命令不支援下列切換。
【--client-data
value
】【--client-token
value
】【--ry-run】
【--no-dry-run】
【--加密】
【--無加密】
【--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" } } }
注意
Snowball Edge 目前僅允許每個裝置一次執行一個作用中的匯入任務。若要啟動新的匯入任務,請等待目前的任務完成,或選擇叢集中的另一個可用節點。您也可以視需要選擇取消目前的匯入。為了防止延遲,請勿在匯入進行時重新啟動 Snowball Edge 裝置。如果您重新啟動裝置,匯入將會失敗,而且當裝置可供存取時,將會刪除進度。若要檢查快照匯入任務狀態的狀態,請使用下列命令:
aws ec2 describe-import-snapshot-tasks --import-task-ids
id
--profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
步驟 4:在 Snowball Edge 上將快照註冊為 AMI
當快照匯入至裝置成功時,您可以使用 register-image
命令註冊它。
注意
只有在 AMI 的所有快照都可用時,您才能註冊 AMI。
如需詳細資訊,請參閱 AWS 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 的範例。如需詳細資訊,請參閱 AWS 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:從 Snowball Edge 上的 AMI 啟動執行個體
若要啟動執行個體,請參閱 AWS CLI 命令參考中的執行執行個體
image-id
參數的值是ImageId
名稱的值,做為 register-image
命令的輸出。
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" }
注意
您也可以使用 AWS OpsHub 來啟動執行個體。如需詳細資訊,請參閱本指南中的啟動與 Amazon EC2-compatible執行個體。
Snowball Edge 的其他 AMI 動作
您可以使用其他 AWS CLI 命令來監控快照匯入狀態、取得已匯入快照的詳細資訊、取消匯入快照,以及在匯入快照之後刪除或取消註冊快照。
在 Snowball Edge 上監控快照匯入狀態
若要查看匯入進度的目前狀態,您可以執行 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】
取消 Snowball Edge 上的匯入任務
若要取消匯入任務,請執行 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】
描述 Snowball Edge 上的快照
匯入快照後,您可以使用此命令來描述快照。若要篩選快照,您可以使用先前匯入任務回應snapshot-ids
中的快照 ID 傳入 。此命令支援 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】
從 Snowball Edge 裝置刪除快照
若要移除您擁有且不再需要的快照,您可以使用 delete-snapshot
命令。
範例 delete-snapshot
命令的
aws ec2 delete-snapshot --snapshot-id
snapshot-id
--profileprofile-name
--endpoint http://snowball-ip
:8008 --region snow
注意
Snowball Edge 不支援刪除處於 PENDING 狀態或被指定為 AMI 根裝置的快照。
此命令不支援下列參數。
-
【--dry-run】
-
【--no-dry-run】
在 Snowball Edge 上取消註冊 AMI
若要取消註冊不再需要AMIs,您可以執行 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】