AWS からイメージをインポートする


Amazon マシンイメージ(AMI)または仮想ディスク イメージ(VMDK、VHD)をアマゾン ウェブ サービス(AWS)の S3 バケットに保存する場合は、Google Cloud CLI を使用して、これらのイメージを Google Cloud にインポートできます。

または、ブートディスクの手動インポートの手順に沿ってイメージをインポートすることもできます。

すべてのインポート オプションの一覧については、移行パスを選択するをご覧ください。

始める前に

  • まだ認証を設定していない場合は、ここで認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境でコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    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 root ユーザー アカウントを使用して認証情報を生成することはおすすめしません。セキュリティ上の理由から、1 人以上の IAM ユーザーを作成して、AWS から AMI または仮想ディスクをエクスポートするために必要な最小限の権限をユーザーに付与することをおすすめします。

IAM ユーザーに必要な最小限の権限は、AWS からエクスポートするイメージのタイプ(AMI または仮想ディスク イメージ)によって異なります。

AMI エクスポート用の AWS IAM ユーザーの作成

このユーザーを作成するには、AWS アカウントでの IAM ユーザーの作成をご覧ください。

このユーザーには、次の権限とサービスロールが必要です。

仮想ディスク イメージ エクスポート用の AWS IAM ユーザーの作成

このユーザーを作成するには、AWS アカウントでの IAM ユーザーの作成をご覧ください。

このユーザーが必要とする最小限の権限の概要については、次の 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 のインストールをご覧ください。

たとえば、次のコマンドは、3,600 秒で期限切れとなる認証情報を生成します。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 セキュリティ トークン サービスを使用して生成する必要があります。
    • 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 セキュリティ トークン サービスを使用して生成する必要があります。
  • DISK_IMAGE_FILE_PATH: インポートする仮想ディスク イメージ ファイルの S3 リソースパス。
  • OS: インポートするディスク イメージのオペレーティング システム

たとえば、ubuntu1804.vmdk 仮想ディスクを S3 バケット image-test-bucket からインポートして、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

次のステップ