將虛擬機器映像匯入 Snowball Edge 裝置 - AWS Snowball 邊緣 開發人員指南

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

將虛擬機器映像匯入 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 --profile profile-name

    如需詳細資訊,請參閱本指南中支援的 AWS CLI 命令

在 Snowball Edge 上使用 Amazon S3 相容儲存上傳 VM 映像
  • 使用 put-object命令將快照檔案複製到裝置上的儲存貯體。

    aws s3api put-object --bucket bucket-name --key path-to-snapshot-file --body snapshot-file --profile your-profile --endpoint-url s3api-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 --profile profile-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 --profile profile-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 --profile profile-name --endpoint http://snowball-ip:6078 --region snow

Snowball Edge 上的呼叫者所需的許可

除了要擔任的 Snowball Edge VM Import/Export 角色之外,您還必須確保使用者具有許可,允許他們將角色傳遞給 VMIE。如果您使用預設根使用者執行匯入,根使用者已經擁有所有必要的許可,因此您可以略過此步驟,然後前往步驟 3。

將下列兩個 IAM 許可連接到執行匯入的使用者。

  • pass-role

  • get-role

建立角色的政策

以下是允許使用者為 IAM 角色執行 get-rolepass-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 --profile profile-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 --profile profile-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 --profile profile-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 --profile profile-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}" --profile profile-name --endpoint http://snowball-ip:8008 --region snow

如需詳細資訊,請參閱 AWS CLI 命令參考中的 Import-snapshot

此命令不支援下列切換。

  • 【--client-data value

  • 【--client-tokenvalue

  • 【--ry-run】

  • 【--no-dry-run】

  • 【--加密】

  • 【--無加密】

  • 【--kms-key-id value

  • 【--tag-specificationsvalue

範例 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 --profile profile-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 \ --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

以下是區塊型裝置映射 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-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" }
注意

您也可以使用 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 --profile profile-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-stateValues=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 --profile profile-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 --profile profile-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-idsvalue

  • 【--dry-run】

  • 【--no-dry-run】

從 Snowball Edge 裝置刪除快照

若要移除您擁有且不再需要的快照,您可以使用 delete-snapshot命令。

範例 delete-snapshot 命令的
aws ec2 delete-snapshot --snapshot-id snapshot-id --profile profile-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 --profile profile-name --endpoint http://snowball-ip:8008 --region snow

此命令不支援下列參數。

  • 【--dry-run】

  • 【--no-dry-run】