Storage Transfer Service は、パブリック URL のリストから Cloud Storage バケットにファイルをコピーできます。
転送を作成するときに、転送するオブジェクトの URL と詳細を含むタブ区切り値(TSV)ファイルへのリンクを指定します。TSV ファイルは、一般公開されている HTTP または HTTPS の場所でホストすることも、Cloud Storage バケットに保存することもできます。
このページでは、URL リストを作成し、ジョブ作成コマンドに渡す方法について説明します。
ソースファイルの要件
- URL は一般公開されており、HTTP または HTTPS プロトコルを使用している必要があります。
- 各オブジェクトをホストするサーバーが次の条件を満たしていること。
robots.txt
でオブジェクトへのアクセスを拒否してはなりません。Range
リクエストのサポート- 各レスポンスで
Content-Length
ヘッダーを返すこと。
URL リストの形式
URL リストは、次の要件を満たしている必要があります。
- ファイルはタブ区切りの値としてフォーマットする必要があります。
- URL は UTF-8 の辞書順で並べる必要があります。
- 最初の行には
TsvHttpData-1.0
を指定する必要があります。 - 最初の行の後に、行ごとに 1 つのオブジェクトを指定します。
- 各行には URL を含める必要があります。また、ファイルサイズとオブジェクトの Base64 でエンコードされた MD5 チェックサムを含めることもできます。
次に、転送する 2 つのオブジェクトを指定する TSV ファイルのサンプルを示します。このページではタブがスペースとしてレンダリングされていますが、独自のファイルでは、フィールド間にタブを使用してください。
TsvHttpData-1.0
https://example.com/myfile.pdf 1357 wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png 2468 R9acAaveoPd2y8nniLUYbw==
各行には次の情報が含まれます。
- 転送元オブジェクトの HTTP または HTTPS URL。
(省略可)オブジェクトのサイズ(バイト単位)。
指定されたサイズが、フェッチされたときのオブジェクトの実際のサイズと一致することを確認します。Cloud Storage が受け取ったオブジェクトのサイズが指定されたサイズと一致しない場合、オブジェクトの転送は失敗となります。
(省略可)オブジェクトの Base64 でエンコードされた MD5 チェックサム。
指定された MD5 チェックサムが、転送されたバイトから計算された MD5 チェックサムと一致することを確認します。Cloud Storage が受け取ったオブジェクトの MD5 チェックサムが、指定された MD5 チェックサムと一致しない場合、オブジェクトの転送は失敗となります。
オブジェクトのサイズと MD5 チェックサム値は省略可能ですが、データの整合性を確保するために含めることを強くおすすめします。
URL リストのホスティング
URL リストは、次のいずれかの場所にホストできます。
- 一般公開されている URL。
Storage Transfer Service のサービス エージェントにアクセス権が付与されている Cloud Storage バケット。
一般公開 URL
一般公開 URL に URL リストを保存する場合は、次の要件が適用されます。
- URL は
http://
またはhttps://
で始まる必要があります。 - URL リストを返すときに、サーバーは HTTP レスポンスに強力な
Etag
ヘッダーを設定する必要があります。
たとえば、リストを Cloud Storage バケットに保存し、オブジェクトを一般公開で共有して、そのオブジェクトへのリンクを取得できます。
Cloud Storage バケット
リストを公開場所に保存しないようにするには、Cloud Storage バケットに保存し、Storage Transfer Service のサービス エージェントにアクセス権を付与します。
サービス エージェントには、次の権限を付与する必要があります。
- オブジェクトに対する
storage.object.get
権限。これは、バケットにroles/storage.legacyObjectReader
ロールを付与するか、カスタムロールを使用して付与できます。 - バケットに対する
storage.buckets.get
権限。これは、roles/storage.legacyBucketReader
ロールを付与するか、カスタムロールで付与できます。
サービス エージェントに権限を付与するには:
サービス エージェントのメールアドレスを確認する
googleServiceAccounts.get
リファレンス ページに移動します。[Try this method] というインタラクティブ パネルが開きます。
パネルの [Request parameters] にプロジェクト ID を入力します。ここで指定するプロジェクトは Storage Transfer Service の管理に使用しているプロジェクトで、これは、URL リスト バケットのプロジェクトとは異なる場合があります。
[実行] をクリックします。
サービス エージェントのメールアドレスが accountEmail
の値として返され、project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
の形式を使用します。
この値をコピーします。
必要なロールを付与する
URL リストを含むバケットのサービス エージェントに roles/storage.objectViewer
ロールと roles/storage.bucketViewer
ロールを付与するには、バケットでの IAM ポリシーの設定と管理の手順に沿って操作します。
追加するプリンシパルは、サービス エージェントのメールアドレスです。必要な場合は、プリンシパル ID は serviceAccount
です。例: serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
URL リスト転送ジョブを作成する
転送ジョブを作成するときに URL リストを指定するには、次の操作を行います。
Google Cloud コンソール
転送ジョブを作成するの手順に沿って操作します。
ソースを選択する際は、次の点にご注意ください。
[参照元の種類] で、[URL リスト] を選択し、[次のステップ] をクリックします。
[TSV ファイルの URL] で、タブ区切りの値(TSV)ファイルの URL を指定します。URL は、HTTP/HTTPS アドレス(
https://example.com/urllist.tsv
など)または Cloud Storage パス(gs://my-bucket/urllist.tsv
など)です。
gcloud CLI
新しい転送ジョブを作成するには、gcloud transfer jobs create
コマンドを使用します。
gcloud transfer jobs create \
SOURCE DESTINATION
URL リストの転送の場合、SOURCE の値は TSV ファイルの URL です。URL は、HTTP/HTTPS アドレス(https://example.com/urllist.tsv
など)または Cloud Storage パス(gs://my-bucket/urllist.tsv
など)です。
gcloud CLI を使用して転送を作成する方法については、転送ジョブを作成するをご覧ください。
REST
REST API を使用して URL リスト転送ジョブを作成するには、listUrl
フィールドに TSV ファイルの URL を指定します。
{
"projectId": "PROJECT_ID",
"transferSpec": {
"httpDataSource": {
"listUrl": "URL"
},
"gcsDataSink": {
"bucketName": "DESTINATION_BUCKET"
}
},
"status": "ENABLED"
}
URL の値は、HTTP/HTTPS アドレス(https://example.com/urllist.tsv
など)または Cloud Storage パス(gs://my-bucket/urllist.tsv
など)です。
REST API を使用して転送を作成する方法については、REST API リファレンスをご覧ください。