このページでは、ファイル システム(オンプレミスまたはクラウド)と Cloud Storage の間で転送ジョブを作成する方法について説明します。
ファイル システムから Cloud Storage への転送はエージェント ベースの転送です。つまり、ファイル システムにアクセスできるマシンにソフトウェア エージェントをインストールして、転送をオーケストレートします。
権限を構成する
転送を作成する前に、次のエンティティの権限を構成する必要があります。
転送の作成に使用されるユーザー アカウント。これは、Google Cloud コンソールにログインするアカウント、または gcloud CLI の認証時に指定されたアカウントです。ユーザー アカウントは、通常のユーザー アカウントでも、ユーザーが管理するサービス アカウントでもかまいません。 | |
Storage Transfer Service で使用される Google 管理のサービス アカウント(サービス エージェントとも呼ばれる)。通常、このアカウントは、project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com という形式を使用するメールアドレスで識別されます。 |
|
転送エージェントに Google Cloud 権限を付与する転送エージェント アカウント。転送エージェント アカウントは、インストールしたユーザーの認証情報またはユーザー管理のサービス アカウントの認証情報を使用して認証を行います。 |
手順については、エージェント ベースの転送権限をご覧ください。
エージェント プールにエージェントをインストールする
エージェント ベースの転送では、ソフトウェア エージェントを使用して転送をオーケストレートします。これらのエージェントは、転送に関係するファイル システムにアクセスできるマシンにインストールする必要があります。
- エージェント プールの作成この操作には、ユーザー アカウント を使用します。
- エージェント プールにエージェントをインストールします。このアクションには、転送エージェント アカウント を使用します。
ソース エージェント プールには 3 つのエージェントから始めることをおすすめします。転送の進行中に転送速度をモニタリングします。転送の進行中に、プールにエージェントを追加できます。
エージェントごとに 1 つの VM(少なくとも 4 個の CPU と 8 GiB の RAM)を使用することをおすすめします。
転送オプション
ファイル システムから Cloud Storage への転送では、次の Storage Transfer Service 機能を使用できます。
- マニフェストを使用して特定のファイルを転送する
- Storage Transfer Service に処理するファイルのリストを渡すことができます。詳しくは、マニフェストを使用して特定のファイルまたはオブジェクトを転送するをご覧ください。
- ストレージ クラスを指定する
- 転送先バケットのデータに使用する
Cloud Storage ストレージ クラスを指定できます。REST の詳細については、
StorageClass
オプションを参照するか、Google Cloud CLI で--custom-storage-class
フラグを使用します。転送先バケットで Autoclass が有効になっている場合、ストレージ クラスの設定は無視されます。Autoclass が有効になっている場合、バケットに転送されるオブジェクトは、最初は Standard Storage に設定されます。
- メタデータの保持
-
ファイル システムからファイルを転送する際に、Storage Transfer Service は特定の属性をカスタム メタデータとして保持できます。これらのファイルが後でファイル システムに書き戻された場合、Storage Transfer Service は保存されたメタデータを POSIX 属性に変換できます。
保持できるメタデータと、転送の構成方法については、メタデータの保持の POSIX ファイル システム転送セクションをご覧ください。
- ネットワーク帯域幅を管理する
- Storage Transfer Service では、デフォルトで、利用可能な帯域幅を使用してファイル システムからファイルを転送します。帯域幅上限を設定することで、転送が他のネットワーク トラフィックに影響を与えないようにできます。帯域幅の上限はエージェント プール レベルで適用されます。
詳しくは、ネットワーク帯域幅の管理をご覧ください。
帯域幅の上限を設定または変更するには、ユーザー アカウントに Storage Transfer 管理者(
roles/storagetransfer.admin
)のロールが必要です。 - ロギング
- Storage Transfer Service は、 Storage Transfer Service 用 Cloud Logging (推奨)とエージェント ベースの転送ログをサポートしています。
転送を作成する
転送ジョブ名に、個人を特定できる情報(PII)やセキュリティ データなどの機密情報を含めないでください。リソース名は、他の Google Cloud リソースの名前に反映され、プロジェクト外部の Google 内部システムに公開される場合があります。
Storage Transfer Service には、転送を作成するための複数のインターフェースが用意されています。
Google Cloud コンソール
Google Cloud コンソールのストレージの [Data Transfer] ページに移動します。
[転送ジョブを作成] をクリックします。[転送ジョブの作成] ページが表示されます。
ソースとして [POSIX ファイル システム] を選択します。
宛先タイプとして [Cloud Storage] を選択し、[次のステップ] をクリックします。
既存のエージェント プールを選択するか、[エージェント プールの作成] を選択し、手順に沿って新しいプールを作成します。
ファイル システム ディレクトリの完全修飾パスを指定します。
[次のステップ] をクリックします。
[バケットまたはフォルダ] フィールドに、ソースバケットと(必要に応じて)フォルダ名を入力するか、[参照] をクリックして、現在のプロジェクトにある既存のバケットリストからバケットを選択します。新しいバケットを作成するには、[新しいバケットを作成] をクリックします。
[次のステップ] をクリックします。
スケジュール オプションを選択します。
[次のステップ] をクリックします。
転送ジョブの設定を選択します。
[説明] フィールドに、転送の説明を入力します。ジョブを区別できるように、意味のある一意の説明を入力することをおすすめします。
[メタデータのオプション] で、デフォルトのオプションを使用するか、1 つ以上の値を更新します。詳細については、メタデータの保持をご覧ください。
[上書きの条件] で、次のいずれかを選択します。
なし: Storage Transfer Service は、転送先に存在するファイルと同じ名前の転送元からのファイルの転送をスキップします。
異なる場合: ソースファイルの名前が同じで ETag またはチェックサムの値が異なる場合、宛先ファイルを上書きします。
常に: ソースファイルが同じ名前の場合、同一であっても常に宛先ファイルを上書きします。
[削除のタイミング] で、次のいずれかを選択します。
なし: ソースと宛先のどちらからもファイルを削除しません。
転送後にソースからファイルを削除する: 転送先に移行した後、ソースからファイルを削除します。
転送元にもないファイルを転送先から削除する: 転送先の Cloud Storage バケット内のファイルが転送元にもない場合は、Cloud Storage バケットからファイルを削除します。
このオプションにより、宛先の Cloud Storage バケットが移行元と完全に一致することが保証されます。
[Cloud Storage でロギングを有効にする] か [Cloud Logging でロギングを有効にする] のいずれかを選択します。詳細については、ファイル システム転送ログと Storage Transfer Service の Cloud Logging をご覧ください。
転送ジョブを作成するには、[作成] をクリックします。
gcloud
gcloud
コマンドを使用する前に、Google Cloud CLI をインストールします。
新しい転送ジョブを作成するには、gcloud transfer jobs create
コマンドを使用します。スケジュールまたは --do-not-run
が指定されていない限り、新しいジョブを作成すると、指定された転送が開始します。
gcloud transfer jobs create \ posix:///SOURCE \ gs://DESTINATION/ \ --source-agent-pool=SOURCE_POOL_NAME
ここで
SOURCE は、ファイル システムのルートからの絶対パスです。接頭辞は
posix://
であるため、最後の値には 3 つのスラッシュが含まれます。例:posix:///tmp/data/
DESTINATION は、Cloud Storage バケットの名前の 1 つです。必要に応じて、フォルダパスの後にスラッシュが続きます。例:
gs://example-bucket/data/
--source-agent-pool
には、この転送に使用するソース エージェント プールを指定します。
上記以外に次のようなオプションがあります。
--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
を指定します。転送オプション: 宛先ファイルを上書きするかどうか(
--overwrite-when=different
またはalways
)、転送中または転送後に特定のファイルを削除するかどうか(--delete-from=destination-if-unique
またはsource-after-transfer
)を指定します。保持するメタデータ値(--preserve-metadata
)を指定することや、転送されたオブジェクトにストレージ クラスを設定することもできます(--custom-storage-class
)。
すべてのオプションを表示するには、gcloud transfer jobs create --help
を実行するか、gcloud
リファレンス ドキュメントをご覧ください。
エージェント ベースの転送では、すべてのオプションがサポートされているわけではありません。サポートされていないオプションについては、ヘルプテキストにこの影響がある旨の注記が含まれます。
REST
次の例は、REST API を通じて Storage Transfer Service を使用する方法を示しています。
Storage Transfer Service API を使用して転送ジョブを構成または編集する場合は、時刻を UTC で設定してください。転送ジョブのスケジュールの指定方法については、スケジュールをご覧ください。
POSIX ファイル システムから Cloud Storage バケットにファイルを移動するには、posixDataSource
を指定して transferJobs.create を使用します。
POST https://storagetransfer.googleapis.com/v1/transferJobs { "name":"transferJobs/sample_transfer", "description": "My First Transfer", "status": "ENABLED", "projectId": "my_transfer_project_id", "schedule": { "scheduleStartDate": { "year": 2022, "month": 5, "day": 2 }, "startTimeOfDay": { "hours": 22, "minutes": 30, "seconds": 0, "nanos": 0 } "scheduleEndDate": { "year": 2022, "month": 12, "day": 31 }, "repeatInterval": { "259200s" }, }, "transferSpec": { "posixDataSource": { "rootDirectory": "/bar/", }, "sourceAgentPoolName": "my_example_pool", "gcsDataSink": { "bucketName": "destination_bucket" "path": "foo/bar/" }, } }
schedule
フィールドは省略可能です。省略した場合は、transferJobs.run
リクエストで転送ジョブを開始する必要があります。
ジョブの作成後に転送のステータスを確認するには、transferJobs.get
を使用します。
GET https://storagetransfer.googleapis.com/v1/transferJobs/sample_transfer?project_id=my_transfer_project_id
クライアント ライブラリ
次のサンプルは、Go、Java、Node.js、Python のプログラムで Storage Transfer Service を使用する方法を示しています。
転送ジョブをプログラムで構成または編集する場合は、時刻を UTC で設定してください。転送ジョブのスケジュールの指定方法について詳しくは、スケジュールをご覧ください。
Storage Transfer Service クライアント ライブラリの詳細については、Storage Transfer Service クライアント ライブラリ スタートガイドをご覧ください。
POSIX ファイル システムから Cloud Storage バケットにファイルを移動するには: