從 AWS 匯入圖片


如果您在 Amazon Web Services (AWS) 的 S3 值區中儲存了 Amazon Machine Image (AMI) 或虛擬磁碟映像檔 (VMDK 或 VHD),可以使用 Google Cloud CLI 將這些映像檔匯入 Google Cloud。

或者,您也可以按照手動匯入開機磁碟的操作說明匯入映像檔。

如需匯入選項的完整清單,請參閱「選擇遷移路徑」。

事前準備

  • 如果尚未設定,請先設定驗證機制。驗證是指驗證身分,以便存取 Google Cloud 服務和 API 的程序。如要在本機開發環境中執行程式碼或範例,您可以選取下列任一選項,向 Compute Engine 進行驗證:
    1. 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.

    2. Set a default region and zone.

從 AWS 匯入圖片的總覽

從 AWS 匯入映像檔至 Compute Engine 的程序如下:

  1. 在 AWS 帳戶中建立 IAM 使用者,該使用者必須具備執行匯出作業的必要權限。

  2. 在 AWS 帳戶中設定及查看設定

  3. 在 AWS 帳戶中,使用先前步驟中建立的 IAM 使用者,產生可供 Google Cloud CLI 使用的臨時憑證

  4. 在 Google Cloud中,使用 Google Cloud CLI 匯入圖片。Google Cloud CLI 會完成下列步驟:

    • 將映像檔從 AWS 匯入至 Compute Engine。
    • 將映像檔新增至 Compute Engine 指定專案的可用映像檔清單。

限制和規定

建立 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

  1. 設定 AWS S3 值區。這個值區會用做臨時儲存空間,Google Cloud CLI 可從中匯出 AMI。匯入至 Compute Engine 的作業成功完成後,Google Cloud CLI 就會從這個儲存桶刪除 AMI。

    這個值區必須與 AMI 位於相同區域。

  2. 匯入 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

後續步驟