このページでは、Cloud Firestore データベースを作成、更新、削除する方法について説明します。プロジェクトごとに複数の Cloud Firestore データベースを作成できます。複数のデータベースを使用して、本番環境とテスト環境の設定、顧客データの分離、データのリージョン指定を行うことができます。
(default)
データベース
アプリで複数のデータベースが必要ない場合は、(default)
データベースを使用します。
データベースを指定しない場合、Cloud Firestore クライアント ライブラリと Google Cloud CLI はデフォルトで(default)
データベースに接続されます。
(default)
データベースでのみ使用できます。必要なロール
データベースを作成して管理するには、Owner
または Datastore Owner
の Identity and Access Management ロールが必要です。これらのロールにより必要な権限が付与されます。
必要な権限
データベースを管理するには、次の権限が必要です。
- データベースを作成する:
datastore.databases.create
- データベース構成を読み取る:
datastore.databases.getMetadata
- データベースを構成する:
datastore.databases.update
- データベースを削除する:
datastore.databases.delete
データベースの作成
データベースを作成するには、次のいずれかの方法を使用します。
Console
-
Firebase コンソールで、[Firestore データベース] ページに移動します。
- 名前付きデータベースを初めて作成する場合は、[データベースを追加] をクリックします。
- そうでない場合は、[(デフォルト)]、[データベースを追加] の順にクリックします。
- データベースを構成します。データベース ID を入力します。ロケーションを選択します。[データベースを作成] をクリックします。
gcloud
gcloud firestore databases create
コマンドを使用します。
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
以下を置き換えます。
- DATABASE_ID: 有効なデータベース ID。
- LOCATION: Cloud Firestore マルチリージョンまたはリージョンの名前。
- DATABASE_TYPE: ネイティブ モードの場合は
firestore-native
、Datastore モードの場合はdatastore-mode
。
--delete-protection
は、削除からの保護を有効にするためのオプションのフラグです。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。
Firebase CLI
firebase firestore:databases:create DATABASE_ID \ --location=LOCATION \ [--delete-protection DELETE_PROTECTION_ENABLEMENT]
以下を置き換えます。
- DATABASE_ID: 有効なデータベース ID。
- LOCATION: Cloud Firestore マルチリージョンまたはリージョンの名前。
- DELETE_PROTECTION_ENABLEMENT:
ENABLED
またはDISABLED
。
作成されるデータベースは常に Firestore ネイティブモードです。
--delete-protection
は、削除からの保護を有効にするためのオプションの引数です。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。
Terraform
resource "google_firestore_database" "database" { project = "project-id" name = DATABASE_ID location_id = LOCATION type = DATABASE_TYPE // Optional delete_protection_state = DELETE_PROTECTION_STATE }
以下を置き換えます。
- DATABASE_ID: 有効なデータベース ID。
- LOCATION: Cloud Firestore マルチリージョンまたはリージョンの名前。
- DATABASE_TYPE: ネイティブ モードの場合は
FIRESTORE_NATIVE
、Datastore モードの場合はDATASTORE_MODE
。 - DELETE_PROTECTION_ENABLEMENT:
DELETE_PROTECTION_ENABLED
またはDELETE_PROTECTION_DISABLED
。
delete_protection_state
は、削除からの保護を有効にするためのオプションの引数です。この設定を無効にするまで、削除からの保護が有効になっているデータベースを削除することはできません。この設定はデフォルトで無効になっています。
データベース ID
有効なデータベース ID には、(default)
と、次の要件に準拠する ID が含まれます。
- 使用できるのは英字、数字、ハイフン(
-
)のみです。 - 文字は小文字のみを使用できます。
- 最初の文字は英字でなければなりません。
- 最後の文字は英字または数字にしてください
- 4 文字以上
- 63 文字以内。
- UUID、または UUID に似た ID は使用しないでください。たとえば、
f47ac10b-58cc-0372-8567-0e02b2c3d479
のような ID は使用しないでください。
データベースを削除すると、5 分経過するまではデータベース ID を再利用することはできません。
削除保護
削除保護を使用すると、データベースの誤削除を防ぐことができます。削除保護を無効にするまで、削除保護が有効になっているデータベースを削除することはできません。削除保護はデフォルトで無効になっています。削除保護は、データベースの作成時に有効にすることも、データベース構成を更新して削除保護を有効にすることもできます。
データベースに Cloud Firestore Security Rules を設定する
Firebase CLI を使用して、Cloud Firestore Security Rules を各データベースにデプロイします。詳細については、Cloud Firestore Security Rules の管理とデプロイに関するガイドをご覧ください。
クライアント ライブラリを使用して名前付きデータベースにアクセスする
名前付きデータベースには、(default)
以外のデータベースが含まれます。デフォルトでは、Firebase SDK と Google API クライアント ライブラリはプロジェクト内の (default)
Cloud Firestore データベースに接続します。名前付きデータベースに接続されたクライアントを作成するには、クライアントをインスタンス化する際にデータベース ID を設定します。
データベースの一覧取得
データベースを一覧表示するには、次の方法のいずれかを使用します。
Console
Google Cloud コンソールで [データベース] ページに移動します。
gcloud
gcloud firestore databases list
コマンドを使用して、プロジェクト内のすべてのデータベースを一覧表示します。
gcloud firestore databases list
Firebase CLI
firebase firestore:databases:list
コマンドを使用して、プロジェクト内のすべてのデータベースを一覧表示します。
firebase firestore:databases:list
データベースの詳細を表示する
単一のデータベースの詳細を表示するには、次のいずれかの方法を使用します。
gcloud
gcloud firestore databases describe
コマンドを使用します。
gcloud firestore databases describe --database=DATABASE_ID
Firebase CLI
firebase firestore:databases:get
コマンドを使用します。
firebase firestore:databases:get DATABASE_ID
DATABASE_ID をデータベース ID に置き換えます。
データベース構成を更新する
データベースの構成設定を更新するには、gcloud firestore databases update
コマンドを使用します。削除保護を有効または無効にするには、このコマンドを使用して変更します。
削除保護の設定を更新する
データベースの削除保護を有効にするには、--delete-protection
フラグを指定して gcloud firestore databases update
コマンドを使用します。次に例を示します。
gcloud
gcloud firestore databases update --database=DATABASE_ID --delete-protection
DATABASE_ID をデータベース ID に置き換えます。
データベースの削除保護を無効にするには、--no-delete-protection
フラグを指定して gcloud firestore databases update
コマンドを使用します。次に例を示します。
gcloud
gcloud firestore databases update --database=DATABASE_ID --no-delete-protection
DATABASE_ID をデータベース ID に置き換えます。
データベースを削除する
データベースを削除するには、コンソールまたはコマンドライン ツールを使用します。
データベースで削除保護の設定が有効になっている場合は、まず削除保護を無効にする必要があります。
データベースに App Engine 検索データまたは blob エンティティが含まれている場合は、まずそのデータを削除する必要があります。
データベースを削除しても、そのデータベースの Eventarc トリガーは自動的に削除されません。トリガーはイベントの配信を停止しますが、トリガーを削除するまで存在し続けます。
Console
-
Firebase コンソールで、[Firestore データベース] ページに移動します。
- [データ] タブで、データベースのデータテーブル ビューの上にある をクリックし、[データベースを削除する] を選択します。
- 手順に沿ってデータベースを削除します。
gcloud
「gcloud firestore databases delete」コマンドを使用します。
gcloud firestore databases delete --database=DATABASE_ID
DATABASE_ID は、削除するデータベース ID に置き換えます。
データベースごとのアクセス権限を構成する
Identity and Access Management の条件を使用して、データベースごとにアクセス権限を構成できます。次の例では、Google Cloud CLI を使用して 1 つ以上のデータベースに条件付きアクセスを割り当てます。Google Cloud コンソールで IAM 条件を定義することもできます。
既存の IAM ポリシーを表示する
gcloud projects get-iam-policy PROJECT_ID
プロジェクト ID に PROJECT_ID
を設定します。
データベースへのアクセス権を付与する
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name=="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
以下のとおりに設定します。
PROJECT_ID
: プロジェクト IDEMAIL
: 特定の Google アカウントを表すメールアドレス。例:alice@example.com
DATABASE_ID
: データベース ID。TITLE
: 式のタイトル(省略可)。DESCRIPTION
: 式の説明(省略可)。
1 つを除くすべてのデータベースにアクセス権を付与する
gcloud projects add-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' \
--condition='expression=resource.name!="projects/PROJECT_ID/databases/DATABASE_ID",title=TITLE,description=DESCRIPTION'
以下のとおりに設定します。
PROJECT_ID
: プロジェクト IDEMAIL
: 特定の Google アカウントを表すメールアドレス。例:alice@example.com
DATABASE_ID
: データベース ID。TITLE
: 式のタイトル(省略可)。DESCRIPTION
: 式の説明(省略可)。
特定のメンバーとロールのポリシーを削除する
gcloud projects remove-iam-policy-binding PROJECT_ID \
--member='user:EMAIL' \
--role='roles/datastore.user' --all
以下のとおりに設定します。
PROJECT_ID
: プロジェクト IDEMAIL
: 特定の Google アカウントを表すメールアドレス。例:alice@example.com
Cloud Monitoring
Cloud Firestore の指標は、2 つのモニタリング対象リソースで報告されます。
集計指標は、firestore.googleapis.com/Database
を確認するとデータベース レベルで調べることができます。firestore_instance
で報告される指標は、プロジェクト レベルで集計されます。
制限事項
- 作成できるデータベースはプロジェクトあたり最大 100 個です。この上限の引き上げをリクエストするには、サポートにお問い合わせください。
- GAE 検索データが含まれている
(default)
データベースは削除できません。GAE 検索データを削除するには、index delete api を使用してください。GAE 検索データを最近削除した場合は、データベースを削除できるようになるまでに時間がかかることがあります。 - blob エンティティが含まれている
(default)
データベースは削除できません。Blobstore データを削除するには、Blobstore delete API を使用してください。(default)
データベースに Blobstore データがあるかどうかを確認するには、Google Cloud コンソールで GQL クエリSELECT * FROM __BlobInfo__
を実行します。 - 削除した後は 5 分経過するまでデータベース ID を再利用できません。
- Cloud Functions v1 は、Firestore の名前付きデータベースをサポートしていません。名前付きデータベースのイベントを構成するには、Cloud Firestore トリガー(第 2 世代)を使用してください。
- Firestore 関数トリガー v1 と Firestore イベント トリガーは、データベースが削除された後に、たとえ同じ名前で新しいデータベースを作成した場合も、動作しなくなる場合があります。