如果您在 Amazon Web Services (AWS) 的 S3 值區中儲存了 Amazon Machine Image (AMI) 或虛擬磁碟映像檔 (VMDK 或 VHD),可以使用 Google Cloud CLI 將這些映像檔匯入 Google Cloud。
或者,您也可以按照手動匯入開機磁碟的操作說明匯入映像檔。
如需匯入選項的完整清單,請參閱「選擇遷移路徑」。
事前準備
-
如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
-
從 AWS 匯入圖片的總覽
從 AWS 匯入映像檔至 Compute Engine 的程序如下:
在 AWS 帳戶中建立 IAM 使用者,該使用者必須具備執行匯出作業的必要權限。
- 如需 AMI 映像檔的相關資訊,請參閱「為 AMI 匯出作業建立 AWS IAM 使用者」。
- 如需虛擬磁碟映像檔的相關資訊,請參閱「為虛擬磁碟映像檔匯出作業建立 AWS IAM 使用者」。
在 AWS 帳戶中設定及查看設定。
在 AWS 帳戶中,使用先前步驟中建立的 IAM 使用者,產生可供 Google Cloud CLI 使用的臨時憑證。
在 Google Cloud中,使用 Google Cloud CLI 匯入圖片。Google Cloud CLI 會完成下列步驟:
- 將映像檔從 AWS 匯入至 Compute Engine。
- 將映像檔新增至 Compute Engine 指定專案的可用映像檔清單。
限制和規定
- 請參閱 AWS 的匯出考量說明文件。
- 請參閱 AWS 的匯出限制說明文件。
- 您無法使用映像檔匯入工具匯入 Arm64 映像檔。如要匯入 Arm64 映像檔,請按照「手動匯入開機磁碟」一文中的逐步操作說明進行。
建立 AWS IAM 使用者
因為使用 AWS 根目錄使用者帳戶產生憑證可能不是最佳做法。基於安全性考量,Google 建議您建立一或多個 IAM 使用者,並為他們提供從 AWS 匯出 AMI 或虛擬磁碟所需的最低權限。
IAM 使用者所需的最低權限取決於您要從 AWS 匯出的映像檔類型 (AMI 或虛擬磁碟映像檔)。
建立 AWS IAM 使用者以匯出 AMI
如要建立此使用者,請參閱「在 AWS 帳戶中建立身分與存取權管理使用者」。
這個使用者必須具備下列必要權限和服務角色:
建立 AWS IAM 使用者,用於匯出虛擬磁碟映像檔
如要建立這個使用者,請參閱「在 AWS 帳戶中建立身分與存取權管理使用者」。
這個使用者所需的最低權限詳述於下列 JSON
IAM 政策中。將 IMAGE_FILE_PATH
替換為要匯入的圖片檔案路徑。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": ["arn:aws:s3:::IMAGE_FILE_PATH"] }, ] }
設定及查看設定
建立 IAM 使用者後,您需要設定環境。
如要設定及查看設定,請執行下列指令:
aws configure
如要進一步瞭解這個指令,請參閱「設定及查看設定」。
產生臨時憑證
建立及設定 IAM 使用者後,您需要建立可供 gcloud compute images import
指令使用的臨時憑證。
此使用者憑證包含下列項目:
- 存取金鑰 ID:
aws-access-key-id
- 存取密鑰:
aws-secret-access-key
- 工作階段符記:
aws-session-token
這個臨時 AWS IAM 使用者憑證必須由 IAM 使用者產生。所選的 IAM 使用者必須具備所有必要權限。
如要產生臨時憑證,您必須使用 AWS 指令列工具,也可以透過程式產生憑證。如要安裝 AWS 指令列,請參閱「安裝 AWS CLI 第 2 版」。
舉例來說,下列指令會產生 3600 秒後到期的憑證。請務必指定足夠的時間,將圖片匯入 Google Cloud。
aws sts get-session-token --duration-seconds 3600
如要進一步瞭解如何產生臨時憑證,請參閱「使用臨時憑證與 AWS 資源」一文。
將映像檔匯入至 Compute Engine
建立 AWS IAM 使用者並產生臨時使用者憑證後,您就可以將映像檔匯入 Compute Engine。
從 AWS 匯入 AMI
設定 AWS S3 值區。這個值區會用做臨時儲存空間,Google Cloud CLI 可從中匯出 AMI。匯入至 Compute Engine 的作業成功完成後,Google Cloud CLI 就會從這個儲存桶刪除 AMI。
這個值區必須與 AMI 位於相同區域。
匯入 AMI。如要從 AWS 匯入 AMI,請使用
gcloud compute images import
指令:gcloud compute images import IMAGE_NAME \ --aws-region=AWS_REGION \ --aws-access-key-id=AWS_ACCESS_KEY_ID \ --aws-secret-access-key=AWS_SECRET_ACCESS_KEY \ --aws-session-token=AWS_SESSION_TOKEN \ --aws-ami-id=AWS_AMI_ID \ --aws-ami-export-location=AWS_AMI_EXPORT_LOCATION \ --os=OS
更改下列內容:
IMAGE_NAME
:要建立的 AMI 映像檔名稱。AWS_REGION
:要匯入的圖片 AWS 區域。AWS_ACCESS_KEY_ID
:臨時 AWS 憑證的存取金鑰 ID。這個 ID 必須使用 AWS Security Token Service 產生。AWS_SECRET_ACCESS_KEY
:臨時 AWS 憑證的存取密鑰。這個金鑰必須使用 AWS Security Token Service 產生。AWS_SESSION_TOKEN
:臨時 AWS 憑證的工作階段權杖。這個工作階段權杖必須使用 AWS Security Token Service 產生。AWS_AMI_ID
:要匯入的映像檔的 AWS AMI ID。AWS_AMI_EXPORT_LOCATION
:您要匯出圖片的 AWS S3 值區位置。這個值區必須與 AMI 位於相同區域。OS
:要匯入的磁碟映像檔作業系統。
示例
舉例來說,如要從 S3 值區
ami-test-bucket
匯入 ID 為ami-04d75016789164863
的 AMI 映像檔,並將其命名為my-ami-test-image
,指令可能會類似以下內容:gcloud compute images import my-ami-test-image \ --aws-region=us-east-2 \ --aws-access-key-id=ASIAXS3ZFH4O3WWGMMH5 \ --aws-secret-access-key=aW/uxvQD68A+hv3m5oQ4zFfaKiS+za+X/kRlBvx0 - \ --aws-session-token=IQoJb3JpZ2luX2VjEEQaCWPIEwL7Qi76PyEIfFyj88...== \ --aws-ami-id=ami-04d75016789164863 \ --aws-ami-export-location=s3://ami-test-bucket \ --os=ubuntu-1804
從 AWS 匯入虛擬磁碟映像檔
如要從 AWS 匯入虛擬磁碟映像檔,請使用 gcloud compute images import
指令:
gcloud compute images import IMAGE_NAME \ --aws-region=AWS_REGION \ --aws-access-key-id=AWS_ACCESS_KEY_ID \ --aws-secret-access-key=AWS_SECRET_ACCESS_KEY \ --aws-session-token=AWS_SESSION_TOKEN \ --aws-source-ami-file-path=DISK_IMAGE_FILE_PATH \ --os=OS
更改下列內容:
IMAGE_NAME
:要建立的磁碟映像檔名稱。AWS_REGION
:要匯入的圖片 AWS 區域。AWS_ACCESS_KEY_ID
:臨時 AWS 憑證的存取金鑰 ID。這個 ID 必須使用 AWS Security Token Service 產生。AWS_SECRET_ACCESS_KEY
:臨時 AWS 憑證的存取密鑰。這個金鑰必須使用 AWS Security Token Service 產生。AWS_SESSION_TOKEN
:臨時 AWS 憑證的工作階段權杖。這個工作階段權杖必須使用 AWS Security Token Service 產生。DISK_IMAGE_FILE_PATH
:您要匯入的虛擬磁碟映像檔檔案的 S3 資源路徑。`OS
:要匯入的磁碟映像檔作業系統。
示例
舉例來說,如要從 S3 值區 image-test-bucket
匯入 ubuntu1804.vmdk
虛擬磁碟並命名為 my-test-image
,指令可能會類似以下內容:
gcloud compute images import my-test-image \ --aws-region=us-east-2 \ --aws-access-key-id=ASIAXS3ZFH4O3WWGMMH5 \ --aws-secret-access-key=aW/uxvQD68A+hv3m5oQ4zFfaKiS+za+X/kRlBvx0 - \ --aws-session-token=IQoJb3JpZ2luX2VjEEQaCWPIEwL7Qi76PyEIfFyj88...== \ --aws-source-ami-file-path=s3://image-test-bucket/ubuntu1804.vmdk \ --os=ubuntu-1804
後續步驟
- 建立新的 VM 執行個體,以便使用可開機映像檔。
- 在多項專案中共用映像檔