將虛擬機器映像匯入至 Snow 系列裝置 - AWS Snowball Edge 開發者指南

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

將虛擬機器映像匯入至 Snow 系列裝置

您可以使用 AWS CLI 和虛擬機器匯入/匯出服務,將虛擬機器 (VM) 映像匯入至 Snow 系列裝置做為 Amazon 機器映像 (AMI)。匯入 VM 映像後,請將映像檔註冊為映像檔,AMI並將其啟動為 Amazon EC2 相容執行個體。

您可以在創建訂購 Snow Family 設備的任務時AMIs從 Amazon EC2 添加到設備。收到 Snow 系列裝置後,請使用此程序。如需詳細資訊,請參閱 選擇您的運算和儲存選項

您也可以使用 AWS OpsHub 來上傳虛擬機器映像檔。如需詳細資訊,請參閱本指南AMI中的以 Amazon EC2 相容方式將影像匯入裝置

步驟 1:準備虛擬機器映像並將其上傳到 Snow 系列設備

透過使用 VM 匯入/匯出中的 Amazon EC2 AMI 或執行個體匯出 VM 映像,或 AWS 雲端 使用您選擇的虛擬化平台在本機產生 VM 映像,以準備 VM 映像。

若要使用 VM 匯入/匯出將Amazon EC2 執行個體匯出為 VM 映像,請參閱《VM 匯入/匯出使用者指南》中的使用 VM 匯出執行個體匯出為 VM。若要使用 VM 匯入/匯出將Amazon 匯出EC2AMI為虛擬機器映像,請參閱虛擬機器匯入/匯出使用者指南中的直接從 Amazon 機器映像匯出虛擬機器 (AMI)

如果從本機環境產生虛擬機器映像,請確定映像已設定為在 Snow Family 裝置AMI上用作。視您的環境而定,您可能需要設定下列項目。

  • 設定和更新作業系統。

  • 設定主機名稱。

  • 確定已設定網路時間通訊協定 (NTP)。

  • 如有必要,請包括SSH公開金鑰。製作金鑰配對的本機複本。如需詳細資訊,請參閱在 Snowball Edge 上使用 SSH Connect 至運算執行個體。

  • 安裝並設定您將在 Snow 系列裝置上使用的任何軟體。

注意

準備 Snow 系列裝置的磁碟快照時,請注意下列限制。

  • Snow 系列裝置目前僅支援匯入RAW影像格式的快照。

  • Snow 系列裝置目前僅支援匯入大小從 1 GB 到 1 TB 的快照。

將虛擬機器映像上傳到 Snow 系列裝置上的 Amazon S3 儲存貯體

準備好虛擬機器映像後,將其上傳到 Snow 系列裝置或叢集上的 S3 儲存貯體。您可以在 Snow 系列裝置上使用 S3 介面卡或 Amazon S3 相容儲存來上傳快照。

使用 S3 介面卡上傳虛擬機器映像
  • 使用指cp令將虛擬機器映像檔複製到裝置上的值區。

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

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

在 Snow 系列裝置上使用 Amazon S3 相容儲存裝置上傳虛擬機器映像
  • 使用指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:在 Snow 系列裝置上設定所需的權限

若要成功匯入,您必須在 Snow Family 裝置、Amazon EC2 和使用者上設定虛擬機器匯入/匯出的許可。

注意

提供這些權限的服務角色和原則位於 Snow 系列裝置上。

Snow 系列裝置上虛擬機器匯入/匯出所需的權限

在開始匯入程序之前,您必須先建立具有信任原則的IAM角色,該角色允許 Snow Family 裝置上的虛擬機器匯入/匯出以擔任該角色。此角色會提供額外的權限,以允許裝置上的虛擬機器匯入/匯出存放在裝置上 S3 儲存貯體中的映像。

創建一個信任策略 json 文件

以下是必須附加至角色的信任原則範例,以便 VM Import/匯出可以存取需要從S3 儲存貯體匯入的快照。

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

使用信任策略 json 文件創建角色

角色名稱可以是虛擬伺服器。您可以使用命令中的--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 邊緣裝置,請變更 snow-id 到您的工作 ID。對於裝置叢集,請變更 snow-id 到叢集識別碼。您也可以使用首碼進一步縮小虛擬機器匯入/匯出可從中匯入快照的位置。像這樣創建一個策略 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

以下是建立原則命令的輸出範例。

{ "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" } }

將原則附加至角色

將原則附加至上一個角色,並授與存取所需資源的權限。這可讓本機虛擬機器匯入/匯出服務從裝置上的 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

Snow 系列裝置上呼叫者所需的權限

除了要假設的 Snowball Edge 虛擬機器匯入/匯出角色之外,您還必須確保使用者具有允許他們將角色傳遞給的權限。VMIE如果您使用預設的 root 使用者來執行匯入,則 root 使用者已擁有所有必要的權限,因此您可以略過此步驟,然後移至步驟 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 --profile profile-name --endpoint http://snowball-ip:6078 --region snow

以下是建立原則命令的輸出範例。

{ "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 --profile profile-name --endpoint http://snowball-ip:6078 --region snow

在 Snow 系列設備EC2APIs上呼叫 Amazon 所需的許可

若要匯入快照,IAM使用者必須具有ec2:ImportSnapshot權限。如果不需要限制使用者的存取權限,您可以使用許可授予完整的 Amazon EC2 存取ec2:*權。以下是可以授予或限制您裝置EC2上 Amazon 的許可。使用顯示的內容建立原則檔:

{ "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

以下是建立原則命令的輸出範例。

{ "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 --profile profile-name --endpoint http://snowball-ip:6078 --region snow

步驟 3:將虛擬機器映像匯入為 Snow 系列裝置上的快照

下一步是將虛擬機器映像匯入為裝置上的快照。S3Bucket參數的值是包含虛擬機器映像的存儲桶的名稱。S3Key參數的值是此值區中虛擬機器映像檔的路徑。

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 指令參考》中的匯入快照

此命令不支援下列參數。

  • [-value 客戶端數據]

  • [-客戶端令牌value]

  • [-乾運行]

  • [--no-dry-run]

  • [-加密]

  • [-不加密]

  • [--kms-key-id value]

  • [-標籤規格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 系列裝置。如果您重新啟動設備,則導入將失敗,並且在設備可訪問時將刪除進度。若要檢查快照匯入工作狀態的狀態,請使用下列指令:

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

步驟 4:在 Snow 系列裝置AMI上將快照註冊為

快照匯入到裝置成功後,您可以使用register-image指令註冊快照。

注意

只有當其所有快照都可用AMI時,您才能註冊。

若要取得更多資訊,請參閱《 AWS CLI 指令參考》中的註冊影像

範例 的命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 指令block-device-mapping 參考》中的註冊影像參數。

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

步驟 5:從 Snow 系列裝置AMI上啟動執行個體

若要啟動例證,請參閱《 AWS CLI 指令參考》中的執行例證。

image-id參數的值是作為register-image命令輸出的ImageId名稱值。

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 來啟動執行個體。如需詳細資訊,請參閱本指南中的啟EC2動 Amazon 相容執行個體。

Snow 系列裝置的其他AMI動作

您可以使用其他 AWS CLI 指令來監控快照匯入狀態、取得已匯入之快照的詳細資訊、取消匯入快照,以及在匯入快照後刪除或取消註冊快照。

監控 Snow 系列裝置上的快照匯入狀態

若要查看匯入進度的目前狀態,您可以執行 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

這個命令不支援下列參數。

  • [-乾運行]

  • [--no-dry-run]

取消 Snow 系列裝置上的匯入任務

若要取消匯入工作,請執行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" }
注意

只有未處於已完成狀態的工作才能取消。

這個命令不支援下列參數。

  • [-乾運行]

  • [--no-dry-run]

描述 Snow 系列裝置上的快照

匯入快照後,您可以使用此指令來描述快照。若要篩選快照,您可以snapshot-ids使用先前匯入任務回應中的快照 ID 傳入。此命令支援分頁和篩選volume-idstatus、和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-ids value]

  • [-乾運行]

  • [--no-dry-run]

從 Snow 系列裝置刪除快照

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

範例 的命delete-snapshot
aws ec2 delete-snapshot --snapshot-id snapshot-id --profile profile-name --endpoint http://snowball-ip:8008 --region snow
注意

Snowball Edge 不支援刪除處於某AMI個PENDING狀態的快照,或者如果快照被指定為.

這個命令不支援下列參數。

  • [-乾運行]

  • [--no-dry-run]

在 Snow 系列裝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

這個命令不支援下列參數。

  • [-乾運行]

  • [--no-dry-run]