Mengotomatiskan pengelolaan resource
Anda dapat mengotomatiskan pembuatan database Firestore dengan proses berikut:
- Buat project Google Cloud baru. Setiap project dibatasi untuk satu database Firestore.
- Buat aplikasi App Engine. Firestore bergantung pada App Engine. Anda harus mengaktifkan App Engine untuk menggunakan Firestore.
- Membuat database 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 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
- 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" }
Ganti kode berikut:
access-token
adalah token akses terautentikasi.project-id
adalah project ID unik.
Jika berhasil, permintaan akan menampilkan nama operasi:
200: { "name": "operations/cp.6311184959990822268" }
-
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 proyek berhasil, responsnya mencakup bidang berikut:
"done": true,
-
Gunakan metode apps.create App Engine Admin API untuk membuat aplikasi App Engine dan database 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" }
Ganti kode berikut:
- project-id adalah ID project yang Anda buat.
- location menetapkan lokasi aplikasi App Engine dan database Firestore Anda.
Setelah lokasi ditetapkan, Anda tidak dapat mengubahnya. Untuk mengetahui daftar lengkap lokasi yang didukung, baca bagian Lokasi App Engine.
App Engine dan Firestore mendukung lokasi yang sama, tetapi region App Engine berikut dipetakan ke multi-region Firestore:
us-central
(Iowa) membuat database Firestore di multi-regionnam5
(Amerika Serikat).europe-west
(Belgia) membuat database Firestore di multi-regioneur3
(Eropa).
Permintaan 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" } }
-
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, responsnya akan 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:
Buat project baru dengan
gcloud projects create
:gcloud projects create project-id
Aktifkan App Engine dengan
gcloud app create
:gcloud app create --region=region --project=project-id
dengan region adalah lokasi aplikasi App Engine dan database Firestore Anda. Setelah lokasi ditetapkan, Anda tidak dapat mengubahnya. Untuk mengetahui daftar lengkap lokasi yang didukung, baca bagian lokasi App Engine.
App Engine dan Firestore mendukung lokasi yang sama, tetapi region App Engine berikut dipetakan ke multi-region Firestore:
us-central
(Iowa) membuat database Firestore di multi-regionnam5
(Amerika Serikat).europe-west
(Belgia) membuat database Firestore di multi-regioneur3
(Eropa).
Aktifkan App Engine Admin API dengan
gcloud services enable
:gcloud services enable appengine.googleapis.com --project=project-id
Buat database Firestore dengan
gcloud alpha firestore databases create
ataugcloud alpha datastore databases create
:gcloud alpha firestore databases create --project=project-id --region=region
Untuk membuat Firestore dalam database 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 Firestore dengan Terraform, gunakan resource google_firestore_database
.
Misalnya, file konfigurasi Terraform berikut membuat project baru dan menyediakan database 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] }
Ganti kode berikut:
- 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 Firestore Anda. Setelah lokasi ditetapkan, Anda tidak dapat mengubahnya. Untuk mengetahui daftar lengkap lokasi yang didukung, lihat Lokasi 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 Firestore di multi-regionnam5
(Amerika Serikat).europe-west
(Belgia) membuat database Firestore di multi-regioneur3
(Eropa).
Selain itu, Firestore tersedia di beberapa region yang tidak termasuk dalam App Engine.
Membuat indeks dalam database
Database Firestore dapat mencakup indeks kolom tunggal atau indeks komposit. Anda dapat mengedit file konfigurasi Terraform agar dapat membuat indeks untuk database Anda.
Indeks kolom tunggal
Contoh file konfigurasi Terraform berikut membuat indeks kolom tunggal di kolom name
dalam koleksi chatrooms
:
firestore.tf
resource "random_id" "variable"{ byte_length = 8 } resource "google_firestore_field" "single-index" { project = "project-id" database = "(default)" collection = "chatrooms_${random_id.variable.hex}" field = "name" index_config { indexes { order = "ASCENDING" query_scope = "COLLECTION_GROUP" } indexes { array_config = "CONTAINS" } } ttl_config {} }
- Ganti project-id dengan project ID Anda. Project ID harus unik.
Indeks komposit
Contoh file konfigurasi Terraform berikut membuat indeks komposit untuk kombinasi kolom name
dan kolom description
dalam koleksi chatrooms
:
firestore.tf
resource "google_firestore_index" "composite-index" { project = "project-id" collection = "chatrooms" fields { field_path = "name" order = "ASCENDING" } fields { field_path = "description" order = "DESCENDING" } }
- Ganti project-id dengan project ID Anda. Project ID harus unik.