Closed4
単一プロジェクト内で複数Firestore Databeseを使い分ける

単一プロジェクト内で複数Firestore Databeseを使い分ける
少し前に Google Cloud プロジェクトで複数の Firestore データベースをサポートすることが発表された。
これによってプロジェクトごとに DB を作り直したり、Collection ベースでの環境(dev, stage, prod)を分離する必要はなくなった。

- Terraform や gcloud CLI から DB を作成可能
- 異なる Firestore データベースに異なるセキュリティポリシーを適用可能
- Firestore Native Mode と Datastore Mode をサポート※
- 全ての Firestore リージョンをサポート
※同一プロジェクトではネイティブ モードと Datastore モードの両方を使用することはできないので同じモードを使用する必要あり。

- Firestore データベースを作成する
# database1
$ gcloud firestore databases create --database=test1 --location=asia-east1 --type=firestore-native
# database2
$ gcloud firestore databases create --database=test2 --location=asia-east1 --type=firestore-native
- 使用例: Go の場合
func main() {
ctx := context.Background()
projectID := ""
databaseID := ""
// 作成したdatabase名を指定
client, err := firestore.NewClientWithDatabase(ctx, projectID, databaseID)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
defer client.Close()
// write
ref, _, err := client.Collection("users").Add(ctx, map[string]interface{}{})
}
Go の Firestore sdk の場合 v1.13.0 以降でないと database を指定できない

セキュリティルールは各Databaseごとに設定可能
このスクラップは2023/11/11にクローズされました