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

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

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

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

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

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

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

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

Java

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

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):

Firestore は、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

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

制限事項

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

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

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

以前の 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

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

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

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

次のステップ