2016-09-16 2 views
1

私は、放出されているイベントに基づいて、Google Cloudのストレージ転送サービスを使用して、さまざまなプロジェクトのバケット間でデータをシャットダウンしようとしています。このイベントは、プロジェクトBのコピー先バケットにコピーするプロジェクトAに属するバケットのサブディレクトリを指しています。したがって、当然のことながら、STSは完璧なフィット感を示していました。ストレージ転送サービスを使用して、異なるプロジェクトのバケット間でデータをコピーするにはどうすればよいですか?

プレフィックス式を含むリクエストを正常に作成しました。私は、コードを使用して同じプロジェクト内のバケット間をコピーして期待どおりに転送します。私はバケツ間転送であることに私のサービスアカウントを使用する場合は、しかし、私は次のエラーを取得する:

Error creating the transfer job: 
Failed to obtain the location of the destination Google Cloud Storage (GCS) bucket due to insufficient permissions. 
Please verify that the necessary permissions have been granted. 

だからここから、私は私のサービスアカウントの権限に見てきました。私は手動で2番目のプロジェクトのプロジェクトエディタ(そして所有者)としてそのサービスアカウントを追加しました。転送しようとしている宛先バケットのACLにアカウントを追加しました。

私が見落としている他の手段はありますか?私は自分の状況に打撃を与えた他の人たちのために、多くの成功を収めているわけではありません。

答えて

1

間違ったサービスアカウントへのアクセスを許可している可能性があります。プロジェクトごとに1つのサービスアカウントが作成されます。サービスアカウントはhereと記載されたget googleServiceAccountsコマンドを使用して見つけることができます。それはのようになります

storage-transfer-{UID}@partnercontent.gserviceaccount.com

UIDは、プロジェクトごとに異なります。 transferJobs create要求で指定したprojectIdに固有のUIDを持つサービスアカウントがソースバケットでREAD/LISTアクセスを、シンクバケットでREAD/WRITE/LISTアクセスを持っていることを確認してください。

セットアップが必要な転送回数が比較的少ない場合は、コンソールを使用してみることもできます。これは、転送を設定するプロセスを簡略化するためのGUIです。コンソールの使用方法はhereです。

関連する問題