リージョン エンドポイントを使用してデータの局所性を構成する

このページでは、リージョン エンドポイントまたはマルチリージョン エンドポイントを使用するように Cloud Firestore クライアント ライブラリを構成する方法について説明します。

Cloud Firestore クライアント ライブラリを使用する場合は、次のいずれかのエンドポイントを使用できます。

  • グローバル エンドポイント: デフォルトでは、Cloud Firestore クライアント ライブラリは、firestore.googleapis.com という名前のグローバル サービス エンドポイントに API リクエストを送信します。グローバル サービス エンドポイントがリクエストをデータベースにルーティングします。ルーティング中に、リクエストがデータベースのロケーションとは異なるロケーションのサーバーを経由する場合があります。

  • リージョン エンドポイント: リージョン エンドポイントには制約が適用されます。これにより、データが指定された Google Cloud リージョンで転送、保存、処理されることが保証されます。サービス エンドポイントがデータベースと同じリージョンのアプリの Cloud Firestore リクエストを処理するには、クライアント ライブラリでリージョン エンドポイントを指定します。

  • マルチリージョン エンドポイント: マルチリージョン エンドポイントには制約が適用されます。これにより、データが指定されたマルチリージョンに保存され、処理されることが保証されます。サービス エンドポイントがデータベースと同じマルチリージョンでアプリの Cloud Firestore リクエストを処理するようにするには、クライアント ライブラリでマルチリージョン エンドポイントを指定します。

リージョン エンドポイントまたはマルチリージョン エンドポイントを設定する

リージョン エンドポイントまたはマルチリージョン エンドポイントを構成する方法は同じです。クライアント ライブラリを初期化するときにエンドポイント文字列を指定します。次の例は、リージョン エンドポイント(firestore.us-central1.rep.googleapis.com)を使用してエンドポイント文字列を設定する方法を示しています。マルチリージョン エンドポイントを使用するには、データベースのロケーションに対応するマルチリージョン エンドポイント文字列を指定します(たとえば、nam5 の場合は firestore.us.rep.googleapis.com)。

Java

Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。


import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.firestore.Firestore;
import com.google.cloud.firestore.FirestoreOptions;


/**
 * Demonstrate how to set a regional endpoint.
 */
public class RegionalEndpointSnippets {

  /**
   * Create a client with a regional endpoint.
   **/
  public Firestore regionalEndpoint(String projectId, String endpoint) throws Exception {
    FirestoreOptions firestoreOptions =
        FirestoreOptions.newBuilder()
            .setProjectId(projectId)
            .setCredentials(GoogleCredentials.getApplicationDefault())
            // set endpoint like firestore.us-central1.rep.googleapis.com:443
            .setHost(endpoint)
            .build();
    Firestore dbWithEndpoint = firestoreOptions.getService();

    return dbWithEndpoint;
  }

}

Python

Cloud Firestore クライアントのインストールと作成の詳細については、Cloud Firestore クライアント ライブラリをご覧ください。

ENDPOINT = "firestore.africa-south1.rep.googleapis.com"
client_options = ClientOptions(api_endpoint=ENDPOINT)
db = firestore.Client(client_options=client_options)

cities_query = db.collection("cities").limit(2).get()
for r in cities_query:
    print(r)

リージョン エンドポイントとマルチリージョン エンドポイントのセマンティクス

リージョン エンドポイント(REP):

Cloud Firestore は、Cloud Firestore のロケーションに記載されているリージョン ロケーションのリージョン エンドポイントをサポートしています。

次の形式を使用してリージョン エンドポイントを定義します。

Java

  firestore.REGION_NAME.rep.googleapis.com:443

エンドポイントとともにポート番号が定義されていることを確認します。

Python

  firestore.REGION_NAME.rep.googleapis.com

Go

  firestore.REGION_NAME.rep.googleapis.com:443

エンドポイントとともにポート番号が定義されていることを確認します。

REGION_NAME は、リージョン ホストの名前に置き換えます。

ホスト名の例を以下に示します。

  • firestore.us-central1.rep.googleapis.com
  • firestore.europe-west1.rep.googleapis.com

マルチリージョン エンドポイント(MREP)

マルチリージョン エンドポイントの場合は、ロケーション nam5nam7us を使用し、ロケーション eur3eu を使用します(マルチリージョン ロケーションをご覧ください)。

Java

  firestore.us.rep.googleapis.com:443
  firestore.eu.rep.googleapis.com:443

エンドポイントとともにポート番号が定義されていることを確認します。

Python

  firestore.us.rep.googleapis.com
  firestore.eu.rep.googleapis.com

Go

  firestore.us.rep.googleapis.com:443
  firestore.eu.rep.googleapis.com:443

エンドポイントとともにポート番号が定義されていることを確認します。

制限事項

  • リージョン エンドポイントとマルチリージョン エンドポイントは、リアルタイム リスナーをサポートしていません。

ロケーション エンドポイント(非推奨)

ロケーション エンドポイントは非推奨になりました。代わりに、リージョン エンドポイントまたはマルチリージョン エンドポイントを使用してください。

以前の Cloud Firestore では、次の形式のロケーション エンドポイントがサポートされていました。

Java

  REGION_NAME-firestore.googleapis.com:443

エンドポイントとともにポート番号が定義されていることを確認します。

Python

  REGION_NAME-firestore.googleapis.com

Go

  REGION_NAME-firestore.googleapis.com:443

エンドポイントとともにポート番号が定義されていることを確認します。

REGION_NAME は、リージョンまたはマルチリージョンのホスト名に置き換えます。

ホスト名の例を以下に示します。

  • eur3-firestore.googleapis.com
  • nam5-firestore.googleapis.com
  • europe-west6-firestore.googleapis.com
  • asia-northeast2-firestore.googleapis.com

マルチリージョンとリージョンのホスト名の完全なリストについては、 Cloud Firestore のロケーションをご覧ください。

グローバル API エンドポイントの使用を制限する

リージョン エンドポイントとマルチリージョン エンドポイントの使用を強制するには、constraints/gcp.restrictEndpointUsage 組織のポリシーの制約を使用して、グローバル API エンドポイントへのリクエストをブロックします。詳細については、エンドポイントの使用の制限をご覧ください。