このページでは、ロケーション エンドポイントを使用して Cloud Storage にアクセスする方法について説明します。ロケーション エンドポイントを使用すると、国際武器取引規則(ITAR)に準拠する方法でワークロードを実行できます。
ITAR に準拠した方法で Cloud Storage を使用する際の制限については、ITAR の制限事項をご覧ください。
概要
ロケーション エンドポイントは、影響を受けるリソースがエンドポイントで指定されたロケーションに存在する場合にのみ、リクエストの続行を許可するリクエスト エンドポイントです。たとえば、バケットの削除リクエストでエンドポイント https://us-central1-storage.googleapis.com
を使用した場合、バケットが US-CENTRAL1
にある場合にのみリクエストが処理されます。
リソースが存在する場所とは異なるロケーションでリクエストを処理できるグローバル エンドポイントとは異なり、ロケーション エンドポイントは、リソースが存在するエンドポイントによって指定されたロケーション内でのみ、リクエストが処理されることを保証します。ロケーション エンドポイントを使用すると、保存中のデータと転送中のデータが管轄区域内にとどまり、データ所在地の要件を満たすことができます。
ロケーション エンドポイントを使用すると、次のことが保証されます。
Cloud Storage に保存されたデータは、指定されたロケーションから移動しません。
オンプレミスから Google Cloud に転送する際に、エンドポイントで指定されたリージョンで TLS 終端が行われます。
Google Cloud サービス間で転送する場合、データは管轄内に保持されます。
ロケーション エンドポイントを使用する場合、ユーザーが次の責任を負うことを前提とします。
データ所在地に関する保証を取得するため、ロケーション エンドポイントに対するリクエストは、同じロケーションから送信されている必要があります。たとえば、Compute Engine の仮想マシンを使用して、
us-central1-storage.googleapis.com
エンドポイント経由でUS-CENTRAL1
に存在するバケットへのリクエストを実行する場合、仮想マシンもUS-CENTRAL1
に存在する必要があります。ロケーション エンドポイントは、サポートされているオペレーションを実行する場合にのみ使用する必要があります。サポートされていないオペレーションを実行すると、エラーが発生します。
ロケーション エンドポイントは、オンプレミスまたは Google Cloud 間(Interconnect または VPN 経由)のトラフィックと、Google Cloud サービス間の転送トラフィック(BigQuery から Cloud Storage など)をサポートします。インターネット トラフィックはサポートされていません。
サポートされているオペレーション
次の表は、ロケーション エンドポイントを使用して実行できるオペレーションと実行できないオペレーションをまとめたものです。一般に、ロケーション内オペレーションはロケーション エンドポイントを使用して実行できますが、ロケーション間オペレーションは実行できません
ロケーション エンドポイントを使用してサポートされていないオペレーションを実行しようとすると、Cloud Storage は次のようなメッセージとともに 400 HTTP エラーコードを返します。「このエンドポイントはオペレーションを実装していません。グローバル エンドポイントを使用してください。」
オペレーション | オブジェクト データの変更 | ロケーション エンドポイントでの使用のサポート |
---|---|---|
オブジェクトの作成 | ○ | ○1 |
オブジェクトの削除 | × | ○1 |
オブジェクトの取得 | ○ | ○1 |
オブジェクトの挿入 | ○ | ○1 |
オブジェクトの一覧表示 | × | ○1 |
オブジェクトのパッチ | × | ○1 |
オブジェクトのコピー | ○ | ○4 |
オブジェクトの書き換え | ○ | ○4 |
バケットの挿入 | × | ○2 |
バケットの削除 | × | ○3 |
バケットの取得 | × | ○2 |
バケットのパッチ | × | ○2 |
バケットの更新 | × | ○2 |
バケットの getIamPolicy | × | ○2 |
バケットの setIamPolicy | × | ○2 |
バケットの testIamPermissions | × | ○2 |
バケットの lockRetentionPolicy | × | ○2 |
バケットの BucketAccessControls | × | ○2 |
バケットの DefaultObjectAccessControls | × | ○2 |
バケットの ObjectAccessControls | × | ○2 |
HMAC キー オペレーション | × | × |
サービス アカウントのオペレーション | × | × |
Pub/Sub 通知オペレーション | オペレーションによって異なる | × |
オブジェクト変更通知オペレーション | オペレーションによって異なる | × |
バッチ オペレーション | オペレーションによって異なる | × |
1 ロケーション エンドポイントを使用してこのオペレーションを実行するには、影響を受けるオブジェクトを含むバケットがエンドポイントで指定されたロケーションに存在する必要があります。たとえば、us-central1-storage.googleapis.com
へのオブジェクト削除リクエストは、US-CENTRAL1
リージョンにあるバケット内のオブジェクトの削除にのみ使用できます。US-CENTRAL1
以外の場所にあるオブジェクトを削除しようとすると、オペレーションは NOT_FOUND
エラーを返します。
2 ロケーション エンドポイントを使用してこのオペレーションを実行するには、エンドポイントで指定されたロケーションにバケットが存在する必要があります。たとえば、us-central1-storage.googleapis.com
へのバケット作成リクエストは、US-CENTRAL1
リージョンにバケットを作成する場合にのみ使用できます。US-CENTRAL1
以外のロケーションにバケットを作成しようとすると、バケットの作成オペレーションで INVALID_ARGUMENT
エラーが返されます。
3 ロケーション エンドポイントを使用してこのオペレーションを実行するには、エンドポイントで指定されたロケーションにバケットが存在する必要があります。たとえば、us-central1-storage.googleapis.com
へのバケット削除リクエストは、US-CENTRAL1
リージョンのバケットの削除にのみ使用できます。US-CENTRAL1
以外のロケーションのバケットを削除しようとすると、オペレーションで NOT_FOUND
エラーが返されます。
4 ロケーション エンドポイントを使用してこのオペレーションを行うには、送信元バケットと宛先バケットの両方がエンドポイントで指定されたロケーションに存在する必要があります。たとえば、両方のバケットが同じロケーションに存在する場合は、ロケーション エンドポイントを使用して、バケット間でオブジェクトをコピーできます。ただし、バケットが複数のロケーションに存在する場合は、ロケーション エンドポイントを使用してバケット間でオブジェクトをコピーすることはできません。送信元バケットまたは宛先バケットがエンドポイントで指定された場所と異なる場所に存在する場合は、NOT_FOUND
エラーが返されます。
サポートされるリージョン
ロケーション エンドポイントは、すべての米国リージョン、US
マルチリージョン、NAM4
事前定義デュアルリージョンでサポートされています。指定できるリージョンの詳細については、バケットのロケーションをご覧ください。
リクエストの実行
コンソール
Google Cloud コンソールを使用して ITAR に準拠したオペレーションを実行する方法については、ITAR に関する制限事項をご覧ください。
コマンドライン
ロケーション エンドポイントで使用できるように Google Cloud CLI を構成するには:
api_endpoint_overrides/storage
プロパティを、使用するロケーション エンドポイントに設定します。gcloud config set api_endpoint_overrides/storage https://LOCATION-storage.googleapis.com/
このプロパティを設定したら、通常どおりに gcloud CLI コマンドを使用できます。
また、各コマンドで CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE
環境変数を設定することで、個々のコマンドにロケーション エンドポイントを使用することもできます。例:
CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE=https://LOCATION-storage.googleapis.com/ gcloud ls gs://my-bucket
クライアント ライブラリ
Cloud Storage クライアント ライブラリはリクエスト エンドポイントを自動的に管理しますが、ロケーション エンドポイントは手動で設定できます。ロケーション エンドポイントの設定方法については、リクエスト エンドポイントを使用したクライアント ライブラリのコードサンプルをご覧ください。
REST API
JSON API
ロケーション エンドポイントへのリクエストを行う場合は、次の URI を使用します。
オブジェクトのアップロード以外の一般的な JSON API リクエストの場合は、次のエンドポイントを使用します
https://LOCATION-storage.googleapis.com
LOCATION は、サポートされているバケットのロケーションに置き換えます。例:
us-central1
。JSON API オブジェクトのアップロードの場合は、次のエンドポイントを使用します。
https://LOCATION-storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o
次のように置き換えます。
LOCATION は、サポートされているバケットのロケーションに置き換えます。例:
us-central1
。BUCKET_NAME は、オブジェクトをアップロードするバケットの名前に置き換えます。例:
my-example-bucket
。
JSON API オブジェクトのダウンロードには、次のエンドポイントを使用します。
https://LOCATION-storage.googleapis.com/download/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media
次のように置き換えます。
LOCATION は、サポートされているバケットのロケーションに置き換えます。例:
us-central1
。BUCKET_NAME は、ダウンロードするオブジェクトを含むバケットの名前に置き換えます。例:
my-example-bucket
。OBJECT_NAME は、アップロードするオブジェクトの名前で置き換えます。例:
waterfall.png
。
JSON API エンドポイントでは HTTPS リクエストのみがサポートされます。
XML API
XML API を使用してロケーション エンドポイントにリクエストを送信する場合は、仮想ホスト形式のエンドポイントまたはパス形式のエンドポイントを使用できます。
仮想ホスト形式のエンドポイント:
https://BUCKET_NAME.LOCATION-storage.googleapis.com
パス形式のエンドポイント:
https://LOCATION-storage.googleapis.com/BUCKET_NAME
両方のエンドポイント タイプで、次のように置き換えます。
LOCATION は、サポートされているバケットのロケーションに置き換えます。例:
us-central1
。BUCKET_NAME は、有効なバケット名に置き換えます。例:
my-example-bucket
。
XML API エンドポイントでは、SSL(Secure Sockets Layer)暗号化がサポートされているため、HTTP または HTTPS のいずれかを使用できます。HTTPS の使用をおすすめします。特に、Cloud Storage に対して OAuth 2.0 を使用して認証する場合は、この方法をおすすめします。
リクエストの形式を適切に設定する
Cloud Storage のツール間でリクエストとの互換性を確保するには:
リクエスト URI のオブジェクト名またはクエリ文字列に含まれる特殊文字が適切にエンコードされていることを確認します。
バケットの命名とオブジェクトの命名に関する考慮事項を理解します。
既知の制約
mTLS エンドポイントはサポートされていません。