App Engine の要件

Firestore データベースが App Engine アプリにリンクされている場合、データベースには同じプロジェクト内のアクティブな App Engine アプリが必要です。アクティブな App Engine アプリがないと、データベースへの読み書きアクセスは無効になります。

アクティブな App Engine の要件

アクティブな App Engine アプリは、アプリが同じプロジェクトに存在し、このアプリが無効になっていないことを意味します。そのアプリは使用する必要ありません。 リンクされたアプリとデータベースは同じリージョン内に存在する必要があります。

App Engine アプリを無効にすると、そのアプリにリンクされている Firestore データベースへのアクセスも無効になります。

要件の更新

Firestore の今後のリリースでは、デフォルトで、新しいデータベースが App Engine からリンク解除がセットアップされます。また、全てのデータベース、既存のデータベースと新しく作成したデータベースの両方に次の要件があります。

  • Google Cloud コンソールと gcloud CLI からデータベースを管理するには、プロジェクトで Firestore API を有効にする必要があります。これは、ネイティブ モードの Firestore データベースと Datastore モードの Firestore データベースの両方で必要です。
  • Google Cloud コンソールまたは gcloud CLI から実行する場合、以下の管理オペレーションには次の IAM 権限が必要です。

    • データベースの作成: datastore.databases.create
    • データベース メタデータの表示: datastore.databases.getMetadata
    • データベース メタデータの編集: datastore.databases.update
要件の変更によりデータベースが影響を受けると、Google Cloud Console の [Firestore] ページに次の通知が表示されます。

まもなく、データベースの管理に Firestore API が必要になります。API を有効にして必要な権限があることを確認してください。

IAM の権限を確認して、データベースへのアクセスに影響がないことを確認します。カスタムロールを使用する場合は、datastore.databases.getMetadata 権限がない可能性があります。datastore.databases.getMetadata はカスタムロールをサポートしています。

IAM 権限の更新

Google Cloud Console からデータベースにアクセスするアカウントに以下の必要な権限が付与されていることを確認します。

  • データベースの作成: datastore.databases.create
  • データの表示: datastore.databases.getMetadata
  • データの編集: datastore.databases.update

必要な権限が含まれているのは、Datastore ユーザーや Datastore 閲覧者などの事前定義ロールです。カスタム IAM ロールを作成した場合は、上述の権限を含むように更新する必要がある場合があります。

カスタムロールを使用してコンソールへのアクセスを管理する場合は、datastore.databases.getMetadata でカスタムロールを更新するか、事前定義ロールを使用して、継続的なアクセスを確保してください。

リンク済み App Engine アプリを無効にすると、データベースに対する読み取り / 書き込みアクセスも無効になります。その場合、Google Cloud コンソールの [Firestore のデータ] ページに、データベースを App Engine アプリからリンクを解除するオプションが表示されます。[データベースのリンクを解除] をクリックしてプロセスを開始します。

Firestore のデータに移動

REST を介してデータベースのリンクを解除することもできます。

curl -X PATCH
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
--data '{"app_engine_integration_mode": "DISABLED"}' \
https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=appEngineIntegrationMode

データベースのリンクを解除すると、データベースへのアクセスに影響を与えることなく App Engine を無効にできます。リンクを解除すると、取り消すことはできません。リンク解除オペレーションが有効になるまでに、最長で 5 分ほどかかる場合があります。