このページでは、Amazon S3 から Cloud Storage への転送ジョブを作成して開始する方法について説明します。
権限を構成する
転送を作成する前に、Amazon S3 バケットに対する権限を構成する必要があります。詳細については、ソースへのアクセスを構成する: Amazon S3 をご覧ください。
また、次の Google Cloud エンティティの権限を構成する必要があります。
転送の作成に使用されるユーザー アカウント。これは、Google Cloud コンソールにログインするアカウント、または gcloud CLI の認証時に指定されたアカウントです。ユーザー アカウントは、通常のユーザー アカウントでも、ユーザーが管理するサービス アカウントでもかまいません。 | |
Google 管理のサービス アカウントは、サービス エージェントとも呼ばれ、Storage Transfer Service で使用されます。通常、このアカウントは、project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com という形式を使用するメールアドレスで識別されます。 |
手順については、エージェントレス転送権限をご覧ください。
下り(外向き)オプション
Storage Transfer Service には、S3 データを Cloud Storage に転送する方法が複数用意されています。
下り(外向き)オプション | 説明 |
---|---|
デフォルトのエージェントレス | このオプションでは、S3 からのマネージド エージェントレス転送を使用します。Amazon により下り(外向き)料金が課金されます。 このオプションを使用するには、このページの手順に従ってください。 |
CloudFront ディストリビューション | Amazon CloudFront ディストリビューションを下り(外向き)パスとして使用します。CloudFront を介したデータ転送では、S3 から直接転送する場合と比較して、AWS の下り(外向き)コストが低くなる可能性があります。詳細については、CloudFront の料金と S3 下り(外向き)料金をご覧ください。 CloudFront 経由で S3 から転送するの手順に沿って、ディストリビューションを設定し、転送を作成します。 |
マネージド プライベート ネットワーク | Google 管理のネットワーク経由でデータを転送します。S3 の下り料金はかかりません。代わりに、GiB 単位のレートで Google Cloud に支払います。詳細については、料金のページをご覧ください。AWS からのオペレーション料金(例:LIST または GET 呼び出し)。詳細については料金をご覧ください。
マネージド プライベート ネットワークを介したすべてのプロジェクトの転送は同じ帯域幅を共有します。使用率が高い場合、転送が遅くなる可能性があります。大きなファイルの転送は、小さなファイルによる転送よりも影響を受けます。 このオプションを使用するには、このページの手順に従ってください。Google Cloud コンソールで [マネージド プライベート ネットワーク] オプションを指定するか、REST API で managedPrivateNetwork フィールドを指定します。gcloud CLI とクライアント ライブラリは、マネージド プライベート ネットワーク転送をサポートしていません。サポートされているリージョンをご覧ください。 |
エージェント主導 | Amazon S3 を含むすべての S3 互換ストレージで有効です。S3 バケットにアクセスできるマシンにエージェント ソフトウェアをインストールすることで、ネットワーク パスと帯域幅を制御できます。このオプションには、エージェントとエージェント プールが必要です。 このオプションを使用するには、S3 互換ソースからの転送の手順に従ってください。 |
サポートされるリージョン
Storage Transfer Service では、次の Amazon S3 リージョンがサポートされます。
af-south-1 ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ap-southeast-3 |
ap-southeast-4 ca-central-1 ca-west-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2
|
eu-west-3 il-central-1 me-central-1 me-south-1 sa-east-1 us-east-1 us-east-2 us-west-1 us-west-2
|
マネージド プライベート ネットワークを使用した転送では、次の AWS リージョンがサポートされます。
us-east-1 us-east-2 us-west-1 us-west-2 ca-west-1 ca-central-1 |
転送オプション
S3 から Cloud Storage への転送では、次の Storage Transfer Service 機能を使用できます。
- マニフェストを使用して特定のファイルを転送する
- Storage Transfer Service に処理するファイルのリストを渡すことができます。詳細については、マニフェストを使用して特定のファイルまたはオブジェクトを転送するをご覧ください。
- ストレージ クラスを指定する
- 転送先バケットのデータに使用する
Cloud Storage ストレージ クラスを指定できます。REST の詳細については、
StorageClass
オプションを参照するか、Google Cloud CLI で--custom-storage-class
フラグを使用します。転送先バケットで Autoclass が有効になっている場合、ストレージ クラスの設定は無視されることに留意してください。Autoclass が有効になっている場合、バケットに転送されるオブジェクトは、最初は Standard Storage に設定されます。
- メタデータの保持
-
S3 からファイルを転送する際に、Storage Transfer Service は特定の属性をカスタム メタデータとして保持できます。
保持できるメタデータと、転送の構成方法については、 メタデータの保持の Amazon S3 から Cloud Storage のセクションをご覧ください。
- イベント ドリブン転送
- Storage Transfer Service は、Amazon SQS に送信された Amazon S3 Event Notifications をリッスンし、ソースのロケーションで追加または更新されたデータを自動的に転送できます。詳細については、イベント ドリブン転送をご覧ください。
- ロギングとモニタリング
- S3 からの転送は、Cloud Logging と Cloud Monitoring で確認できます。詳細については、Storage Transfer Service の Cloud Logging と転送ジョブのモニタリングをご覧ください。Pub/Sub 通知を構成することもできます。
転送を作成する
Storage Transfer Service には、転送を作成するための複数のインターフェースが用意されています。
転送ジョブ名に、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。リソース名は、他の Google Cloud リソースの名前に反映され、プロジェクト外部の Google 内部システムに公開される場合があります。
Google Cloud コンソール
Google Cloud コンソールの [Storage Transfer Service] ページに移動します。
[転送ジョブを作成] をクリックします。[転送ジョブの作成] ページが表示されます。
[参照元の種類] で [Amazon S3] を選択します。
[宛先の種類] として [Google Cloud Storage] を選択します。
スケジュール モードを選択します。バッチ転送は、1 回限りまたはスケジュールに基づいて実行されます。イベント ドリブン転送は、ソースを継続的にモニタリングし、追加や変更が行われるとデータを転送します。
イベント ドリブン転送を構成するには、イベント ドリブン転送の手順を実施します。
[次のステップ] をクリックします。
[バケットまたはフォルダの名前] フィールドに、転送元バケットの名前を入力します。
このバケット名は、AWS Management Console に表示される名前です。
CloudFront ディストリビューションを使用して S3 から転送する場合は、[CloudFront ドメイン] フィールドにディストリビューション ドメイン名を入力します。たとえば、
https://dy1h2n3l4ob56.cloudfront.net
のようにします。CloudFront ディストリビューションを構成するには、CloudFront 経由で S3 から転送するをご覧ください。この転送にマネージド プライベート ネットワークを使用するには、チェックボックスをオンにします。詳細については、下り(外向き)オプションをご覧ください。
アマゾン ウェブ サービス(AWS)の認証方法を選択します。詳細については、ソースへのアクセスを構成する: Amazon S3 をご覧ください。
アクセスキー: [アクセスキー ID] フィールドにアクセスキーを入力し、[シークレット アクセスキー] フィールドにアクセス キーに関連付けられたシークレットを入力します。
ID 連携用の AWS IAM ロール: 次の構文で [AWS IAM ロールの ARN] フィールドに ARN を入力します。
arn:aws:iam::ACCOUNT:role/ROLE-NAME-WITH-PATH
ここで
ACCOUNT
: ハイフンのない AWS アカウント ID。ROLE-NAME-WITH-PATH
: パスを含む AWS ロール名。
ARN の詳細については、IAM ARN をご覧ください。
シークレット リソース: Secret Manager に保存されている Amazon 認証情報を使用するには、このオプションを選択します。リストからシークレットを選択するか、
projects/PROJECT_NUMBER/secrets/SECRET_NAME
の形式で手動で入力します。
イベント ドリブン転送の場合は、Amazon SQS キューの ARN を入力します。これは、次の形式になります。
arn:aws:sqs:us-east-1:1234567890:event-queue
- 必要に応じて、オブジェクトを前方一致でフィルタするか、最終更新日時でフィルタします。ソースの場所としてフォルダを指定した場合、接頭辞フィルタはそのフォルダを基準とします。たとえば、ソースが
my-test-bucket/path/
の場合、file
の一致フィルタにはmy-test-bucket/path/file
で始まるすべてのファイルが含まれます。 [次のステップ] をクリックします。
[バケットまたはフォルダ] フィールドに、ソースバケットと(必要に応じて)フォルダ名を入力するか、[参照] をクリックして、現在のプロジェクトにある既存のバケットリストからバケットを選択します。新しいバケットを作成するには、[新しいバケットを作成] をクリックします。
[次のステップ] をクリックします。
転送ジョブの設定を選択します。
[説明] フィールドに、転送の説明を入力します。ジョブを区別できるように、意味のある一意の説明を入力することをおすすめします。
[メタデータのオプション] で、デフォルトのオプションを使用するか、[オプションを表示して選択する] をクリックして、サポートされているすべてのメタデータの値を指定します。詳細については、メタデータの保持をご覧ください。
[上書きの条件] で、次のいずれかを選択します。
異なる場合: ソースファイルの名前が同じで ETag またはチェックサムの値が異なる場合、宛先ファイルを上書きします。
常に: ソースファイルが同じ名前の場合、同一であっても常に宛先ファイルを上書きします。
[削除のタイミング] で、次のいずれかを選択します。
なし: ソースと宛先のどちらからもファイルを削除しません。
転送後にソースからファイルを削除する: 転送先に移行した後、ソースからファイルを削除します。
転送元にもないファイルを転送先から削除する: 転送先の Cloud Storage バケット内のファイルが転送元にもない場合は、Cloud Storage バケットからファイルを削除します。
このオプションにより、宛先の Cloud Storage バケットが移行元と完全に一致することが保証されます。
[通知オプション] で、Pub/Sub トピックと通知するイベントを選択します。詳細については、Pub/Sub 通知をご覧ください。
[次のステップ] をクリックします。
スケジュール オプションを選択します。
[1 回だけ実行] プルダウン リストから、次のいずれかを選択します。
1 回だけ実行: 選択した時間に、1 回だけ転送を行います。
毎日実行: 転送は毎日、選択した時刻に開始されます。
オプションの [終了日] を入力することも、[終了日] を空白のままにして転送を継続的に実行することもできます。
毎週実行: 選択した時間に毎週転送を実行します。
カスタム頻度で実行: 選択した頻度で転送を実行します。転送は、時間、日、週の間隔で定期的に繰り返すように設定できます。
オプションの [終了日] を入力することも、[終了日] を空白のままにして転送を継続的に実行することもできます。
[今すぐ開始] プルダウン リストから、次のいずれかを選択します。
今すぐ開始: [作成] をクリックすると転送が開始されます。
開始日: 選択した日時に転送を開始します。[カレンダー] をクリックして、カレンダーから開始日を選択します。
転送ジョブを作成するには、[作成] をクリックします。
gcloud CLI
新しい転送ジョブを作成するには、gcloud transfer jobs create
コマンドを使用します。スケジュールまたは --do-not-run
が指定されていない限り、新しいジョブを作成すると、指定された転送が開始します。
gcloud CLI では、CloudFront または Managed プライベート ネットワークを介した転送はサポートされていません。
gcloud transfer jobs create \
s3://S3_BUCKET_NAME gs://STORAGE_BUCKET_NAME \
--source-creds-file="relative_path/to/creds.json"
ここで
S3_BUCKET_NAME は、この転送のデータソースです。必要に応じて、パスを含めることができます:
s3://S3_BUCKET_NAME/S3_FOLDER_PATH
STORAGE_BUCKET_NAME は、転送先の Cloud Storage バケットです。特定のディレクトリに転送するには、末尾のスラッシュを含めて
gs://STORAGE_BUCKET_NAME/STORAGE_FOLDER_PATH/
を指定します。--source-creds-file
には、転送元の AWS または Azure 認証情報を含むマシン上のローカル ファイルへの相対パスを指定します。内容は次の JSON 形式にする必要があります。{ "accessKeyId": string, "secretAccessKey": string }
上記以外に次のようなオプションがあります。
--do-not-run
は、コマンドの送信時に Storage Transfer Service がジョブを実行しないようにします。ジョブを実行するには、更新してスケジュールを追加するか、jobs run
を使用して手動で開始します。--manifest-file
には、ソースから転送するファイルのリストを含む Cloud Storage 内の CSV ファイルのパスを指定します。マニフェスト ファイルの形式については、マニフェストを使用して特定のファイルまたはオブジェクトを転送するをご覧ください。ジョブ情報:
--name
と--description
を指定できます。スケジュール:
--schedule-starts
、--schedule-repeats-every
、--schedule-repeats-until
、または--do-not-run
を指定します。オブジェクト条件: 条件を使用して、転送するオブジェクトを決定します。これには、
--include-prefixes
と--exclude-prefixes
、--include-modified-[before | after]-[absolute | relative]
の時間ベースの条件が含まれます。ソースでフォルダを指定した場合、接頭辞フィルタはそのフォルダを基準とします。詳細については、ソース オブジェクトを前方一致でフィルタするをご覧ください。転送オプション: 宛先ファイルを上書きするかどうか(
--overwrite-when=different
またはalways
)、転送中または転送後に特定のファイルを削除するかどうか(--delete-from=destination-if-unique
またはsource-after-transfer
)を指定します。保持するメタデータ値(--preserve-metadata
)を指定することや、転送されたオブジェクトにストレージ クラスを設定することもできます(--custom-storage-class
)。通知:
--notification-pubsub-topic
、--notification-event-types
、--notification-payload-format
を使用して、転送の Pub/Sub 通知を構成します。Cloud Logging:
--log-actions
と--log-action-states
で Cloud Logging を有効にします。詳細については、Storage Transfer Service の Cloud Logging をご覧ください。
すべてのオプションを表示するには、gcloud transfer jobs create --help
を実行するか、gcloud
リファレンス ドキュメントをご覧ください。
REST
次のサンプルは、REST API を介して Storage Transfer Service を使用する方法を示しています。
Storage Transfer Service API を使用して転送ジョブを構成または編集する場合は、時刻を UTC で設定してください。転送ジョブのスケジュールの指定方法については、スケジュールをご覧ください。
転送ジョブを作成する場合は、Amazon S3 バケットソース名に bucketName
の s3://
接頭辞を含めないでください。
エージェントレス転送
次の例では、標準のエージェントレス構成を使用して転送ジョブを作成します。詳細については、transferJobs.create のリファレンスをご覧ください。
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
その他の認証オプションについては、送信元へのアクセスを構成する: Amazon S3 をご覧ください。
CloudFront ディストリビューション
CloudFront ディストリビューションを介して S3 から転送する場合は、ディストリビューション ドメイン名を transferSpec.awsS3DataSource.cloudfrontDomain
フィールドの値として指定します。
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
マネージド プライベート ネットワーク
Google が管理するプライベート ネットワークを使用して S3 から転送するには、transferSpec.awsS3DataSource.managedPrivateNetwork
フィールドを指定します。
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "managedPrivateNetwork": TRUE, "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
クライアント ライブラリ
次のサンプルは、Go、Java、Node.js、Python のプログラムで Storage Transfer Service を使用する方法を示しています。
転送ジョブをプログラムで構成または編集する場合は、時刻を UTC で設定してください。転送ジョブのスケジュールの指定方法について詳しくは、スケジュールをご覧ください。
Storage Transfer Service クライアント ライブラリの詳細については、Storage Transfer Service クライアント ライブラリ スタートガイドをご覧ください。
Amazon S3 から Cloud Storage への転送
この例では、Amazon S3 から Cloud Storage バケットにファイルを移動します。
転送ジョブを作成する場合は、Amazon S3 バケットソース名に bucketName
の s3://
接頭辞を含めないでください。
Storage Transfer Service クライアント ライブラリは、CloudFront またはマネージド プライベート ネットワークを介した転送をサポートしていません。
Go
Java
古いサンプルをお探しの場合Storage Transfer Service 移行ガイドをご覧ください。
Node.js
Python
古いサンプルをお探しの場合Storage Transfer Service 移行ガイドをご覧ください。