このページでは、Cloud Storage のリクエスト元による支払い機能の概要について説明します。
はじめに
ユーザーがバケットやオブジェクトなど Cloud Storage のリソースにアクセスするたびに、リクエストの作成と実行に関連する料金が発生します。次のような料金が含まれます。
通常は、リソースのプロジェクト オーナーにこれらの料金が請求されます。ただし、リクエスト元から請求先プロジェクトにリクエストが送信された場合は、リクエスト元のプロジェクトが代わりに請求されます。バケットでリクエスト元による支払いが有効になっている場合、リクエストに請求先プロジェクトを指定するようにリクエスト元に要求し、課金先をリクエスト元のプロジェクトにすることができます。リクエスト元による支払い機能を有効にすると、ユーザーに提供したいデータが大量にあるが、このデータへのアクセスに関する料金を請求されたくない場合に有用です。
対象外の料金
データ ストレージ料金(早期削除料金を含む)はバケットを含むプロジェクトに常に適用されます(リクエスト元による支払いが有効な場合も含む)。
制限事項
リクエスト元による支払いを使用する場合、以下の制限が適用されます。
- Cloud SQL からのインポートおよびエクスポートにリクエスト元による支払いが有効になっているバケットを使用することはできません。
- Pub/Sub からのエクスポートに、リクエスト元による支払いが有効になっているバケットは使用できません。
使用条件とアクセス要件
バケットでリクエスト元による支払いを有効にするには、バケットでメタデータ フラグを有効にします。有効にすると、次のユーザーだけがバケットやそのコンテンツにアクセスできるようになります。
リクエストに請求先プロジェクトが含まれるリクエスト元。リクエストで使用されるプロジェクトは良好な状態でなければなりません。また、ユーザーが
serviceusage.services.use
権限を含むプロジェクト内のロールを所持する必要があります。必要な権限は、Service Usage ユーザーロールに含まれています。請求先プロジェクトは追加していないが、バケットを含むプロジェクトに
resourcemanager.projects.createBillingAssignment
権限を持つユーザー。必要な権限が含まれているのは課金プロジェクト マネージャーのロールです。これらのリクエストに関連するアクセス料金は、バケットを含むプロジェクトに請求されます。
バケットに対する他のリクエストはすべて失敗し、400 UserProjectMissing
エラーが発生します。
これらの要件以外にも、リクエスト元は要求されたアクションの実行に必要な権限を持っている必要があります。たとえば、リクエストに有効な請求先プロジェクトを追加したユーザーでも、バケットにオブジェクトをアップロードする明示的な権限がなければ、この操作を実行できません。この場合、バケットまたはバケットを含むプロジェクトに対して storage.objects.create
権限が必要です。
リクエスト元による支払いを無効にする場合は、リクエストに請求先プロジェクトを含めるか、resourcemanager.projects.createBillingAssignment
権限を持つ必要があります。
ソースに請求されるオペレーション
ソースバケットと宛先バケットの両方を使用するオペレーション(コピーや書き換えなど)の場合、ソースバケットを含むプロジェクトに課金されます。通常、JSON または XML API による直接呼び出しなど、ソースバケットでリクエスト元による支払い機能が有効になっているときにのみ、請求先プロジェクトを追加します。
--no-clobber
フラグを指定した gcloud storage cp
など、ソースバケットまたは宛先バケットのいずれか(あるいは両方)でリクエスト元による支払い機能が有効になっているときに、請求先プロジェクトの追加が必要になる場合があります。このようなオペレーションでは、アクションの実行中にソースと宛先の両方のバケットが呼び出されるため、このような操作が必要になります。
複数リクエストのオペレーション
複数のリクエストを実施する必要があるオペレーションの場合、ユーザーのリクエストで使用する請求先プロジェクトは次のように動作します。
再開可能なアップロードの場合は、最初のリクエストにのみ課金プロジェクトを含めるだけで、アップロード全体に適用されます。後続のリクエストで指定された請求先アカウントは無視されます。
JSON API による書き換えと XML API マルチパート アップロードの場合、各リクエストで異なる課金プロジェクトを使用できます。以前のリクエストで指定した課金プロジェクトは後続のリクエストに適用されません。
請求
リクエストの請求先プロジェクトに課金される料金は、請求書で別途表示されることはありません。たとえば、リクエスト元による支払い機能が有効になっているバケットから複数のダウンロードを行い、リクエストで請求先プロジェクトとして my-project
を指定したとします。my-project
にダウンロード元のバケットが含まれている場合、請求書にはこれらのダウンロードの合計金額が表示されます。独自のバケットからのダウンロードとリクエスト元による支払い機能のダウンロードを区別する方法はありません。
自分の Cloud Storage リソースからの請求とリクエストに含まれる請求先プロジェクトからの請求を区別するには、Cloud Storage リソースを含まないプロジェクトを作成してください。そのプロジェクトは、その他のプロジェクトのリソースへのリクエストに特化したものになります(リクエスト元による支払いのバケットなど)。
次のステップ
- リクエスト元による支払いの使用方法を確認する。
- データを一般公開する。