自动创建数据库

您可以通过以下过程自动创建 Cloud Firestore 数据库:

  1. 创建新的 Google Cloud 项目。每个项目只能有一个 Cloud Firestore 数据库。
  2. 创建 App Engine 应用。Cloud Firestore 依赖于 App Engine。您必须激活 App Engine 才能使用 Cloud Firestore。
  3. 创建 Cloud Firestore 数据库。

本页介绍如何使用 REST API、gcloud 命令行工具和 Terraform 完成此过程。

使用 REST API 创建数据库

您可以使用 Resource Manager API 和 App Engine Admin API 预配 Cloud Firestore 数据库。

身份验证和授权

如需访问 Resource Manager API 和 App Engine Admin API,您必须通过访问令牌对您的请求进行身份验证。您的访问令牌需要以下网址的 OAuth 2.0 范围:

https://www.googleapis.com/auth/cloud-platform

如需为应用设置身份验证,请参阅为服务器到服务器的生产应用设置身份验证

在开发和测试应用时,您可以使用以下命令获取访问令牌:

gcloud auth application-default print-access-token

授权

经过身份验证的用户帐号或服务帐号需要具备 resourcemanager.projects.create 权限才能创建新项目。 例如,IAM 角色 Project Creator 可授予此权限。

如需授予此角色,请参阅授予、更改和撤消对资源的访问权限

创建新项目和数据库

  1. 使用 projects.create 方法启动项目创建操作。在请求正文中,定义 Project 资源,例如:

    HTTP

    POST https://cloudresourcemanager.googleapis.com/v1/projects HTTP/1.1
    
    Authorization: Bearer access-token
    Accept: application/json
    Content-Type: application/json
    
    {
      "projectId": "project-id"
    }
          

    其中:

    成功后,该请求将返回操作名称:

    200:
    
    {
      "name": "operations/cp.6311184959990822268"
    }
        
  2. 使用上一步中的操作名称和 Resource Manager operations.get 方法确认创建项目:

    HTTP

    GET https://cloudresourcemanager.googleapis.com/v1/operations/operation-name HTTP/1.1
    
    Authorization: Bearer access-token
    Accept: application/json
    

    如果成功创建了项目,响应中将包含以下字段:

    "done": true,
          
  3. 使用 App Engine Admin API apps.create 方法创建 App Engine 应用和 Cloud Firestore 数据库。在请求正文中,定义一个 Application 资源并添加 databaseType 字段,例如:

    HTTP

    POST https://appengine.googleapis.com/v1/apps HTTP/1.1
    
    Authorization: Bearer access_token
    Accept: application/json
    Content-Type: application/json
    
    {
      "databaseType": "CLOUD_FIRESTORE",
      "id": "project-id",
      "locationId": "location"
    }
          

    其中:

    • project-id 是您创建的项目的 ID。
    • location 用于设置 App Engine 应用和 Cloud Firestore 数据库的位置。 位置一经设置便无法更改。如需查看受支持位置的完整列表,请参阅 App Engine 位置

      App Engine 和 Cloud Firestore 支持相同的位置,但下面的 App Engine 区域位置与 Cloud Firestore 多区域位置相对应:

      • us-central(爱荷华)在 nam5(美国)多区域位置创建 Cloud Firestore 数据库。
      • europe-west(比利时)在 eur3(欧洲)多区域位置创建 Cloud Firestore 数据库。

    该请求将返回操作名称:

    200:
    
    {
      "name": "apps/project-id/operations/8612e502-4aeb-4f12-9e41-bbac0a0b819c",
      "metadata": {
        "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
        "method": "google.appengine.v1.Applications.CreateApplication",
        "insertTime": "2020-06-05T23:34:32.587Z",
        "user": "username",
        "target": "apps/project-id"
      }
    }
            
  4. 使用上一步中的操作名称和 apps.operations.get 确认创建数据库:

    HTTP

    GET https://appengine.googleapis.com/v1/operation-name HTTP/1.1
    
    Authorization: Bearer access-token
    Accept: application/json
        

    如果操作成功,响应中将包含以下字段:

    "done": true,
          

添加结算帐号和 Firebase 服务

如需以编程方式将结算帐号与您的项目相关联,请使用 projects.updateBillingInfo 方法。

如需以编程方式为您的项目启用 Firebase 服务,请参阅使用 Management REST API 设置和管理 Firebase 项目

使用 gcloud 创建数据库

您可以使用 gcloud 命令行工具在 Bash 或 PowerShell 脚本中自动创建数据库。在脚本中,完成以下步骤:

  1. 使用 gcloud projects create 创建一个新项目:

    gcloud projects create project-id
  2. 使用 gcloud app create 激活 App Engine:

    gcloud app create --region=region --project=project-id

    其中,region 是 App Engine 应用和 Cloud Firestore 数据库的位置。 位置一经设置便无法更改。如需查看受支持位置的完整列表,请参阅 App Engine 位置

    App Engine 和 Cloud Firestore 支持相同的位置,但下面的 App Engine 区域位置与 Cloud Firestore 多区域位置相对应:

    • us-central(爱荷华)在 nam5(美国)多区域位置创建 Cloud Firestore 数据库。
    • europe-west(比利时)在 eur3(欧洲)多区域位置创建 Cloud Firestore 数据库。
  3. 使用 gcloud services enable 启用 App Engine Admin API:

    gcloud services enable appengine.googleapis.com --project=project-id
  4. 使用 gcloud alpha firestore databases creategcloud alpha datastore databases create 创建 Cloud Firestore 数据库:

    gcloud alpha firestore databases create --project=project-id --region=region

    如需创建 Datastore 模式的 Cloud Firestore 数据库,请使用以下命令:

    gcloud alpha datastore databases create --project=project-id --region=region

    对于 region,您必须使用用于激活 App Engine 的值。

使用 Terraform 创建数据库

如需使用 Terraform 预配 Cloud Firestore 数据库,请使用 google_firestore_database 资源。

例如,以下 Terraform 配置文件会创建一个新项目并预配一个 Cloud Firestore 数据库:

firestore.tf

provider "google" {
  credentials = file("credentials-file")
}

resource "google_project" "my_project" {
  name       = "My Project"
  project_id = "project-id"
}

resource "google_project_service" "firestore" {
  project = google_project.my_project.project_id
  service = "firestore.googleapis.com"
}

resource "google_firestore_database" "database" {
  project     = google_project.my_project.project_id
  name        = "(default)"
  location_id = "location"
  type        = "FIRESTORE_NATIVE"

  depends_on = [google_project_service.firestore]
}

其中:

  • credentials-file 是服务帐号密钥文件的路径。
  • project-id 是项目 ID。项目 ID 不得重复。
  • location 是 Cloud Firestore 数据库的位置。位置一经设置便无法更改。如需查看受支持位置的完整列表,请参阅 Cloud Firestore 位置

如果您想使用 App Engine,请改为使用 google_app_engine_application 资源。将 database_type 设置为 CLOUD_FIRESTORECLOUD_DATASTORE_COMPATIBILITY

provider "google" {
  credentials = file("credentials-file")
}

resource "google_project" "my_project" {
  name = "My Project"
  project_id = "project-id"
}

resource "google_app_engine_application" "app" {
  project     = google_project.my_project.project_id
  location_id = "location"
  database_type = "CLOUD_FIRESTORE"
}
  • us-central(爱荷华)在 nam5(美国)多区域位置创建 Cloud Firestore 数据库。
  • europe-west(比利时)在 eur3(欧洲)多区域位置创建 Cloud Firestore 数据库。

此外,Cloud Firestore 可以在 App Engine 不可用的某些区域使用。