ソースへのアクセスを構成する: Amazon S3

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Amazon S3 バケットへのアクセスは、次のいずれかの方法で設定できます。

サポートされるリージョン

Storage Transfer Service は、次の Amazon S3 リージョンからデータを転送できます。

ap-east-1 ca-central-1 me-south-1
ap-northeast-1 eu-central-1 sa-east-1
ap-northeast-2 eu-north-1 us-east-1
ap-south-1 eu-west-1 us-east-2
ap-southeast-1 eu-west-2 us-west-1
ap-southeast-2 eu-west-3 us-west-2

必要な権限

Storage Transfer Service を使用して Amazon S3 バケットからデータを移動するには、ユーザー アカウントまたはフェデレーション ID のロールにバケットに対する適切な権限が必要です。

権限 説明 使用
s3:ListBucket Storage Transfer Service にバケット内のオブジェクトの一覧表示を許可します。 常に必要。
s3:GetBucketLocation Storage Transfer Service にバケットのロケーションの取得を許可します。 常に必要。
s3:GetObject Storage Transfer Service にバケット内のオブジェクトの読み取りを許可します。 すべてのオブジェクトを現在のバージョンに転送する場合は必須です。マニフェストでオブジェクトのバージョンが指定されている場合は、代わりに s3:GetObjectVersion を使用します。
s3:GetObjectVersion Storage Transfer Service にバケット内の特定のバージョンのオブジェクトの読み取りを許可します。 マニフェストでオブジェクトのバージョンが指定されている場合は必須です。それ以外の場合は、s3:GetObject を使用します。
s3:DeleteObject Storage Transfer Service にバケット内のオブジェクトの削除を許可します。 deleteObjectsFromSourceAfterTransfertrue に設定する場合は必須です。

アクセス認証情報を使用して認証する

アクセスキー ID と秘密鍵を使用して AWS を認証するには:

  1. AWS Identity and Access Management(AWS IAM)ユーザーを transfer-user などのわかりやすい名前で作成します。

  2. AWS アクセスタイプで [Access key - Programmatic access] を選択します。

  3. 次のいずれかのロールをユーザーに付与します。

    • AmazonS3ReadyOnlyAccess。ソースに対する読み取り専用アクセス権を付与します。これにより転送は可能になりますが、転送完了後にソースでオブジェクトを削除することはできません。
    • AmazonS3FullAccess。転送時にオブジェクトを削除するように構成されている場合に使用します。
    • 上の必要な権限の表にある適切な権限を持つカスタムロール。 最小権限の JSON は次の例のようになります。

      {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::AWS_BUCKET_NAME/*",
                    "arn:aws:s3:::AWS_BUCKET_NAME"
                ]
            }
        ]
      }
      
  4. ユーザーが正常に作成されたら、アクセスキー IDシークレット アクセス キーをメモします。

アクセスキー ID とシークレット アクセスキーを Storage Transfer Service に渡す方法は、転送を開始するために使用するインターフェースによって異なります。

Cloud コンソール

値を転送ジョブ作成フォームに直接入力します。

開始するには、転送を作成するをご覧ください。

gcloud CLI

次の形式の JSON ファイルを作成します。

{
  "accessKeyId": "AWS_ACCESS_KEY_ID",
  "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
}

source-creds-file フラグを使用して、ファイルの場所を gcloud transfer jobs create コマンドに渡します。

gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
  --source-creds-file=PATH/TO/KEYFILE.JSON

REST API

transferSpec オブジェクトに awsS3DataSource オブジェクトの一部としてキー情報を含める必要があります。

"transferSpec": {
  "awsS3DataSource": {
    "bucketName": "AWS_SOURCE_NAME",
    "awsAccessKey": {
      "accessKeyId": "AWS_ACCESS_KEY_ID",
      "secretAccessKey": "AWS_SECRET_ACCESS_KEY"
    }
  },
  "gcsDataSink": {
    "bucketName": "GCS_SINK_NAME"
  }
}

クライアント ライブラリ

転送を作成するページの例をご覧ください。

フェデレーション ID を使用して認証する

フェデレーション ID を使用して AWS を認証するには:

  1. AWS で新しい IAM ロールを作成します。

  2. 信頼できるエンティティ タイプとして [Custom trust policy] を選択します。

  3. 次の信頼ポリシーをコピーして貼り付けます。

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Federated": "accounts.google.com"
          },
          "Action": "sts:AssumeRoleWithWebIdentity",
          "Condition": {
            "StringEquals": {
              "accounts.google.com:sub": "SUBJECT_ID"
            }
          }
        }
      ]
    }
    
  4. SUBJECT_ID は、Storage Transfer Service の使用を開始するときに自動的に作成される、Google 管理のサービス アカウントの subjectID に置き換えます。subjectID を取得するには:

    1. googleServiceAccounts.get リファレンス ページに移動します。

      [Try this method] というインタラクティブ パネルが開きます。

    2. パネルの [Request parameters] にプロジェクト ID を入力します。ここで指定するプロジェクトは、Storage Transfer Service の管理に使用しているプロジェクトである必要があります。

    3. [実行] をクリックします。レスポンスに subjectId が含まれている。

  5. 次のいずれかの権限ポリシーをロールに付与します。

    • AmazonS3ReadOnlyAccess。ソースへの読み取り専用アクセスを提供します。これにより転送は可能になりますが、転送完了後にソースでオブジェクトを削除することはできません。
    • AmazonS3FullAccess。転送時にオブジェクトを削除するように構成されている場合に使用します。
    • 上の必要な権限の表にある適切な権限を持つカスタムロール。 最小権限の JSON は次の例のようになります。

      {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket",
                    "s3:GetBucketLocation"
                ],
                "Resource": [
                    "arn:aws:s3:::AWS_BUCKET_NAME/*",
                    "arn:aws:s3:::AWS_BUCKET_NAME"
                ]
            }
        ]
      }
      
  6. ロールに名前を割り当てて、ロールを作成します。

  7. 作成したら、ロールの詳細を表示して、Amazon リソース名(ARN)を取得します。この値をメモします。形式は arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME です。

ARN を Storage Transfer Service に渡す方法は、転送の開始に使用するインターフェースによって異なります。

Cloud コンソール

ARN を転送ジョブ作成フォームに直接入力します。

開始するには、転送を作成するをご覧ください。

gcloud CLI

次の形式の JSON ファイルを作成します。

{
  "roleArn": "ARN"
}

source-creds-file フラグを使用して、ファイルの場所を gcloud transfer jobs create コマンドに渡します。

gcloud transfer jobs create s3://S3_BUCKET_NAME gs://GCS_BUCKET_NAME \
  --source-creds-file=PATH/TO/ARNFILE.JSON

REST API

transferSpec オブジェクトに awsS3DataSource オブジェクトの一部として ARN 情報を含める必要があります。

"transferSpec": {
  "awsS3DataSource": {
    "bucketName": "AWS_SOURCE_NAME",
    "roleArn": "ARN"
  },
  "gcsDataSink": {
    "bucketName": "GCS_SINK_NAME"
  }
}

クライアント ライブラリ

転送を作成するページの例をご覧ください。