Mengotomatiskan pembuatan database

Anda dapat mengotomatiskan pembuatan database Cloud Firestore dengan mengikuti proses berikut:

  1. Buat project Google Cloud baru. Setiap project dibatasi untuk satu database Cloud Firestore.
  2. Buat aplikasi App Engine. Cloud Firestore bergantung pada App Engine. Anda harus mengaktifkan App Engine untuk dapat menggunakan Cloud Firestore.
  3. Buat database Cloud Firestore.

Halaman ini menjelaskan cara menyelesaikan proses ini menggunakan REST API, alat command-line gcloud, dan Terraform.

Membuat database dengan REST API

Anda dapat menyediakan database Cloud Firestore menggunakan Resource Manager API dan App Engine Admin API.

Autentikasi dan otorisasi

Untuk mengakses Resource Manager API dan App Engine Admin API, Anda harus mengautentikasi permintaan dengan token akses. Token akses Anda memerlukan cakupan OAuth 2.0:

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

Untuk menyiapkan autentikasi aplikasi, baca artikel mengenai menyiapkan autentikasi untuk aplikasi produksi server ke server.

Saat mengembangkan dan menguji aplikasi, Anda dapat memperoleh token akses menggunakan:

gcloud auth application-default print-access-token.

Otorisasi

Akun layanan atau akun pengguna terautentikasi memerlukan izin resourcemanager.projects.create untuk membuat project baru. Peran IAM Project Creator, misalnya, memberikan izin ini.

Untuk memberikan peran ini, baca artikel mengenai cara memberikan, mengubah, dan mencabut akses ke resource.

Membuat database dan project baru

  1. Gunakan metode projects.create untuk memulai operasi pembuatan project. Dalam isi permintaan, tentukan resource Project, misalnya:

    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"
    }
          

    dengan:

    Jika berhasil, permintaan akan menampilkan nama operasi:

    200:
    
    {
      "name": "operations/cp.6311184959990822268"
    }
        
  2. Gunakan nama operasi dari langkah sebelumnya dan metode operations.get Resource Manager untuk mengonfirmasi pembuatan project:

    HTTP

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

    Saat pembuatan project berhasil, respons yang muncul mencakup kolom berikut:

    "done": true,
          
  3. Gunakan metode apps.create App Engine Admin API untuk membuat aplikasi App Engine dan database Cloud Firestore. Dalam isi permintaan, tentukan resource Application dan sertakan kolom databaseType, misalnya:

    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"
    }
          

    dalam hal ini:

    • project-id adalah ID project yang Anda buat.
    • location menetapkan lokasi aplikasi App Engine dan database Cloud Firestore Anda. Setelah lokasi ditetapkan, Anda tidak dapat mengubahnya. Untuk mengetahui daftar lengkap lokasi yang didukung, baca bagian Lokasi App Engine.

      App Engine dan Cloud Firestore mendukung lokasi yang sama, tetapi region App Engine berikut dipetakan ke multi-region Cloud Firestore:

      • us-central (Iowa) membuat database Cloud Firestore di multi-region nam5 (Amerika Serikat).
      • europe-west (Belgia) membuat database Cloud Firestore di multi-region eur3 (Eropa).

    Permintaan akan menampilkan nama operasi:

    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. Gunakan nama operasi dari langkah sebelumnya dan apps.operations.get untuk mengonfirmasi pembuatan database:

    HTTP

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

    Saat operasi berhasil, respons yang ditampilkan mencakup kolom berikut:

    "done": true,
          

Menambahkan akun penagihan dan layanan Firebase

Untuk mengaitkan akun penagihan dengan project secara terprogram, gunakan metode projects.updateBillingInfo.

Untuk mengaktifkan layanan Firebase untuk project Anda secara terprogram, pelajari cara menyiapkan dan mengelola project Firebase menggunakan Management REST API.

Membuat database dengan gcloud

Anda dapat menggunakan alat command line gcloud untuk mengotomatiskan pembuatan database dalam skrip Bash atau PowerShell. Dalam skrip Anda, lakukan langkah-langkah berikut:

  1. Buat project baru dengan gcloud projects create:

    gcloud projects create project-id
  2. Aktifkan App Engine dengan gcloud app create:

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

    dengan region sebagai lokasi aplikasi App Engine dan database Cloud Firestore Anda. Setelah lokasi ditetapkan, Anda tidak dapat mengubahnya. Untuk mengetahui daftar lengkap lokasi yang didukung, baca bagian lokasi App Engine.

    App Engine dan Cloud Firestore mendukung lokasi yang sama, tetapi region App Engine berikut dipetakan ke multi-region Cloud Firestore:

    • us-central (Iowa) membuat database Cloud Firestore di multi-region nam5 (Amerika Serikat).
    • europe-west (Belgia) membuat database Cloud Firestore di multi-region eur3 (Eropa).
  3. Aktifkan App Engine Admin API dengan gcloud services enable:

    gcloud services enable appengine.googleapis.com --project=project-id
  4. Buat database Cloud Firestore dengan gcloud alpha firestore databases create atau gcloud alpha datastore databases create:

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

    Untuk membuat database Cloud Firestore dalam mode Datastore, gunakan:

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

    Untuk region, nilai yang digunakan harus sama dengan yang Anda gunakan untuk mengaktifkan App Engine.

Membuat database dengan Terraform

Untuk menyediakan database Cloud Firestore dengan Terraform, gunakan resource google_firestore_database.

Misalnya, file konfigurasi Terraform berikut membuat project baru dan menyediakan database 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]
}

dengan:

  • credentials-file adalah jalur ke file kunci akun layanan Anda.
  • project-id adalah project ID Anda. Project ID harus unik.
  • location adalah lokasi kedua database Cloud Firestore Anda. Setelah lokasi ditetapkan, Anda tidak dapat mengubahnya. Untuk mengetahui daftar lengkap lokasi yang didukung, baca artikel Lokasi Cloud Firestore.

Jika Anda ingin menggunakan App Engine, gunakan resource google_app_engine_application. Tetapkan database_type ke CLOUD_FIRESTORE atau CLOUD_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 (Iowa) membuat database Cloud Firestore di multi-region nam5 (Amerika Serikat).
  • europe-west (Belgia) membuat database Cloud Firestore di multi-region eur3 (Eropa).

Selain itu, Cloud Firestore tersedia di beberapa region yang tidak dimiliki App Engine.