gcloud を使用してデータ転送を作成して管理する

このページでは、gcloud コマンドライン ツールを使用して転送ジョブの設定と管理を行う方法について説明します。

始める前に

転送ジョブを作成する前に、次のことを行います。

  1. 次のいずれかのロールが割り当てられ、Storage Transfer Service にアクセスできることを確認します。

    • roles/owner
    • roles/editor
    • roles/storagetransfer.admin
    • roles/storagetransfer.user
    • 少なくとも roles/storagetransfer.user 権限を含むカスタムロール。

      プロジェクト レベルの権限の追加と表示の詳細については、プロジェクトでの IAM 権限の使用をご覧ください。

    詳細については、アクセスのトラブルシューティングをご覧ください。

    Storage Transfer Service の IAM のロールと権限の詳細については、IAM のロールと権限を使用したアクセス制御をご覧ください。

  2. データソースとデータシンクへのアクセスの構成

gcloud ツールを構成する

まだインストールしていない場合は、gcloud コマンドライン ツールをインストールします

gcloud 用の alpha コンポーネントもインストールする必要があります。

gcloud components install alpha

次に、gcloud init を呼び出してツールを初期化し、プロジェクト ID とユーザー アカウントを指定します。詳細については、Cloud SDK の初期化をご覧ください。

gcloud init

このドキュメントでは、サンプルコードで $PROJECT_ID を使用して、一意のプロジェクト名を参照します。最初に独自のプロジェクト ID を変数に割り当てる場合は、この例の変数を使用できます。

PROJECT_ID=$(gcloud config get-value project) && echo $PROJECT_ID

転送ジョブの作成

クラウド間転送の場合

新しい転送ジョブを作成するには、gcloud alpha transfer jobs create コマンドを使用します。スケジュールまたは --do-not-run が指定されていない限り、新しいジョブを作成すると、指定された転送が開始します。

gcloud alpha transfer jobs create \
  SOURCE DESTINATION \
    --source-creds-file=SOURCE_CREDS_FILE \
    --do-not-run

ここで

  • SOURCE は、この転送のデータソースです。各ソースの形式は次のとおりです。

    • Amazon S3 バケットの場合は s3://BUCKET_NAME/FOLDER_PATH
    • Microsoft Azure Storage コンテナの場合は https://myaccount.blob.core.windows.net/CONTAINER_NAME
    • Cloud Storage バケットの場合はgs://BUCKET_NAME
    • URL リストの場合は https://PATH_TO_URL_LIST。HTTP URL もサポートされます。
  • DESTINATION は常に Cloud Storage バケットで、gs://BUCKET_NAME の形式で指定します。

  • --source-creds-file には、転送元の AWS または Azure 認証情報を含むマシン上のローカル ファイルへの相対パスを指定します。認証情報ファイルの形式については、TransferSpec のリファレンスをご覧ください。

  • do-not-run は、コマンドの送信時に Storage Transfer Service がジョブを実行しないようにします。ジョブを実行するには、更新してスケジュールを追加するか、jobs run を使用して手動で開始します。

上記以外に次のようなオプションがあります。

  • ジョブ情報: namedescriptionsource-creds-file を指定できます。

  • スケジュール: schedule-startsschedule-repeats-everyschedule-repeats-until、または do-not-run を指定します。

  • オブジェクト条件: 条件を使用して、転送するオブジェクトを決定します。include-prefixesexclude-prefixesinclude-modified-[before | after]-[absolute | relative] の時間ベースの条件が含まれます。

  • 上書きオプションと削除オプション: 宛先ファイルを上書きするかどうか(--overwrite-when=different または always)、転送中または転送後に特定のファイルを削除するかどうかを指定します(--delete-from=destination-if-unique または source-after-transfer)。

  • 通知: notification-pubsub-topicnotification-event-typesnotification-payload-format を使用して、転送の Pub/Sub 通知を構成します。

すべてのオプションを表示するには、gcloud alpha transfer jobs create --help を実行します。

たとえば、過去 1 日間で変更されたデータを s3://my-s3-bucket から my-storage-bucket という名前の Cloud Storage バケットに移動する毎日の転送ジョブを作成するには、次のコマンドを実行します。

gcloud alpha transfer jobs create \
  s3://my-s3-bucket gs://my-storage-bucket \
  --source-creds-file=/examplefolder/creds.txt \
  --include-modified-after-relative=1d \
  --schedule-repeats-every=1d`

オンプレミス転送またはファイル システム転送の場合

Filestore などのクラウド ファイル システムを含む POSIX ファイルシステムとの間で転送する場合は、次の手順を行います。

この転送のエージェント プールとエージェントがまだない場合:

  1. エージェント プールを作成します。

    gcloud alpha transfer agent-pools create my-agent-pool
    
  2. 転送エージェントをインストールします。

    gcloud alpha transfer agents install --pool=my-agent-pool --count=3
    

    環境に最適なエージェント数を決定するには、エージェントの要件とベスト プラクティスをご覧ください。

    サービス アカウント キーを使用してエージェントを実行するには、--creds-file オプションを使用します。

    gcloud alpha transfer agents install --pool=my-agent-pool --count=3 \
       --creds-file=/relative/path/to/service-account-key.json
    

    オプション フラグの一覧については、gcloud alpha transfer agents install --help をご覧ください。

gcloud alpha transfer jobs create コマンドを使用します。

gcloud alpha transfer jobs create \
  SOURCE DESTINATION \
  --source-agent-pool=projects/$PROJECT_ID/agentPools/my-source-agent-pool \
  --destination-agent-pool=projects/$PROJECT_ID/agentPools/my-destination-agent-pool

ここで

  • SOURCEDESTINATION は次のいずれかです。

    • POSIX ファイル システム(posix:///path/to/folder 形式)。これは、エージェント ホストマシンのルートからの絶対パスである必要があります。
    • Cloud Storage バケット(gs://bucket-name 形式)。
    • Amazon S3 バケットまたは Microsoft Azure Storage コンテナ。
  • --source-agent-pool には、この転送に使用するソース エージェント プールを指定します。

  • --destination-agent-pool には、この転送に使用する転送先エージェント プールを指定します。詳しくは、Cloud Storage からデータをダウンロードするをご覧ください。

転送に指定できるのは --source-agent-pool または --destination-agent-pool のいずれか 1 つだけです。

上記以外に次のようなオプションがあります。

  • ジョブ情報: namedescription を指定できます。

  • スケジュール: schedule-startsschedule-repeats-everyschedule-repeats-until、または do-not-run を指定します。

  • 上書きオプションと削除オプション: 宛先ファイルを上書きするかどうか(--overwrite-when=different または always)、転送中または転送後に特定のファイルを削除するかどうかを指定します(--delete-from=destination-if-unique または source-after-transfer)。

  • 通知: notification-pubsub-topicnotification-event-typesnotification-payload-format を使用して、転送の Pub/Sub 通知を構成します。

オブジェクトの条件(--include- または --exclude- で始まるオプション)は、POSIX ファイル システムにかかわる転送ではサポートされていません。

たとえば、ローカル ファイル システムから my-unique-bucket という名前の Google Cloud Storage バケットにデータを転送する転送ジョブを作成するには、次のコマンドを実行します。

gcloud alpha transfer jobs create \
  posix:///usr/local/my_dir gs://my-unique-bucket \
  --source-agent-pool=projects/$PROJECT_ID/agentPools/my-agent-pool`

すべてのオプションを表示するには、gcloud alpha transfer jobs create --help を実行します。

転送構成の編集

既存の転送構成を編集するには、gcloud alpha transfer jobs update コマンドを使用します。

gcloud alpha transfer jobs update \
  JOB_NAME \
  [options]

ここで

  • JOB_NAME は、更新するジョブの一意の名前です。

  • 更新できるオプションは、gcloud alpha transfer jobs update --help を実行するとリスト表示されます。

たとえば、ジョブの送信元と宛先を更新し、説明を削除するには、次のコマンドを実行します。

gcloud alpha transfer jobs update \
  JOB_NAME \
  --source=gs://new-bucket-1 \
  --destination=gs://new-bucket-2 \
  --clear-description

転送ジョブを無効にするには:

gcloud alpha transfer jobs update JOB_NAME --status=disabled

既存の構成から転送ジョブを実行する

既存の構成から転送を実行するには、gcloud alpha transfer jobs run を使用します。

gcloud alpha transfer jobs run JOB_NAME

オプションの --no-async フラグを指定して、転送オペレーションが完了するまでターミナル内の他のタスクをブロックできます。

転送ジョブをモニタリングする

ジョブの進行状況をリアルタイムでモニタリングするには、gcloud alpha transfer jobs monitor を使用します。

gcloud alpha transfer jobs monitor JOB_NAME

レスポンスには、現在のオペレーション、ジョブ開始時間、転送されたデータの量が表示されます。スキップされたバイト数とエラー数もカウントされます。

転送ジョブの詳細を表示する

転送ジョブの詳細を表示するには、gcloud alpha transfer jobs describe を使用します。

gcloud alpha transfer jobs describe JOB_NAME

このジョブの最新のオペレーションを表示するには、latestOperationName の値を operations describe コマンドに渡します。

gcloud alpha transfer operations describe OPERATION_NAME

ジョブの転送オペレーションを一覧表示するには、gcloud alpha transfer operations list コマンドを使用します。

gcloud alpha transfer operations list --job-names=JOB_NAME

複数のジョブのオペレーションを表示するには、--job-names の値としてカンマ区切りで指定します。すべてのジョブのオペレーションを表示するには、--job-names を省略します。

転送ジョブを一時停止する

現在進行中の転送は一時停止できます。転送を一時停止すると、ジョブの状態は保持され、後で一時停止を解除できます。転送が一時停止している間は、スケジュールによってジョブが再度実行されることはありません。

転送ジョブを一時停止するには、ジョブの現在のオペレーション名を gcloud alpha transfer operations pause に渡します。

gcloud alpha transfer operations pause OPERATION_NAME

以前に一時停止した転送ジョブを再開すると、一時停止したときと同じ場所でジョブが再開するようにするには、gcloud alpha transfer operations resume を使用します。

gcloud alpha transfer operations resume OPERATION_NAME

転送ジョブを無効にする

転送ジョブを無効にすると、その転送ジョブはその後のスケジュールされたオペレーションを開始できなくなります。また、コンソールから手動で開始されたオペレーションも開始できなくなります。API または jobs run gcloud コマンドを使用してジョブを手動で開始することはできません。

転送ジョブを無効にするには、ジョブのステータスを disabled に更新します。

gcloud alpha transfer jobs update JOB_NAME --status=disabled

ジョブを再度有効にするには、--status=enabled を設定します。

転送ジョブを削除する

不要になった転送ジョブは削除できます。ジョブを削除すると、次のようになります。

  • ジョブに含まれる既存の転送をすべて停止します。
  • ジョブに含まれる定期的な転送を停止します。
  • ジョブの構成データを消去します。

ジョブを削除すると、元に戻すことはできません。転送ジョブを削除すると、転送ジョブのリストから削除されます。転送ジョブ情報は、30 日後に Storage Transfer Service から完全に削除されます。

転送ジョブを削除するには、gcloud alpha transfer jobs delete を使用します。

gcloud alpha transfer jobs delete JOB_NAME