データベースの作成と管理
このページでは、Firestore データベースを作成、更新、削除する方法について説明します。プロジェクトごとに複数の Firestore データベースを作成できます。複数のデータベースを使用して、本番環境とテスト環境の設定、顧客データの分離、データのリージョン指定を行うことができます。
(default)
データベース
アプリで複数のデータベースが必要ない場合は、(default)
データベースを使用します。
データベースを指定しない場合、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
-
Google Cloud コンソールで [データベース] ページに移動します。
- [データベースを作成] をクリックします。
- データベース モードを選択します。[続行] をクリックする
- データベースを構成します。データベース ID を入力します。ロケーションを選択します。モバイル クライアントとウェブ クライアントのセキュリティ ルールを選択します。[データベースを作成] をクリックします。
gcloud
gcloud firestore databases create
コマンドを使用します。
gcloud firestore databases create \ --database=DATABASE_ID \ --location=LOCATION \ --type=DATABASE_TYPE \ [--delete-protection]
以下を置き換えます。
- DATABASE_ID: 有効なデータベース ID。
- LOCATION: 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: 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: 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 を再利用することはできません。
削除保護
削除保護を使用すると、データベースの誤削除を防ぐことができます。削除保護を無効にするまで、削除保護が有効になっているデータベースを削除することはできません。削除保護はデフォルトで無効になっています。削除保護は、データベースの作成時に有効にすることも、データベース構成を更新して削除保護を有効にすることもできます。
データベースに Firestore セキュリティ ルールを設定する
Firebase CLI を使用して、Firestore セキュリティ ルールを各データベースにデプロイします。詳しくは、Firestore セキュリティ ルールの管理とデプロイに関するガイドをご覧ください。
クライアント ライブラリを使用して名前付きデータベースにアクセスする
名前付きデータベースには、(default)
以外のデータベースが含まれます。デフォルトでは、Firebase SDK と Google API クライアント ライブラリはプロジェクト内の (default)
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
コマンドを使用します。このコマンドを使用して、データベースの種類を変更したり、削除保護を切り替えたりします。
データベース タイプを変更する
データベースの種類を更新するには、--type=
フラグを指定して gcloud firestore databases update
コマンドを使用します。データベースが空である場合にのみ、種類を変更できます。
gcloud
gcloud firestore databases update --database=DATABASE_ID \ --type=DATABASE_TYPE
次のように置き換えます。
- DATABASE_ID: データベース ID。
- DATABASE_TYPE: ネイティブ モードの場合は
firestore-native
、Datastore モードの場合はdatastore-mode
。
削除保護の設定を更新する
データベースの削除保護を有効にするには、--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 Search データまたは blob エンティティが含まれている場合は、まずそのデータを削除する必要があります。
データベースを削除しても、そのデータベースの Eventarc トリガーは自動的に削除されません。トリガーはイベントの配信を停止しますが、トリガーを削除するまで存在し続けます。
Console
-
Google Cloud コンソールで [データベース] ページに移動します。
- 削除するデータベースのテーブル行にある [さらに表示] をクリックします。[削除] をクリックします。ダイアログが表示されます。
[データベースを削除しますか?] ダイアログのテキスト フィールドにデータベース ID を入力して、削除を確定します。[削除] をクリックします。オペレーションの成功または失敗がコンソールに表示されます。
オペレーションが失敗した場合は、データベースの詳細を表示し、削除保護が無効になっていることを確認します。削除保護を無効にするには、削除保護の設定を更新するをご覧ください。
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
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 イベント トリガーは、データベースが削除された後に、たとえ同じ名前で新しいデータベースを作成した場合も、動作しなくなる場合があります。