Persyaratan App Engine

Sebelumnya, semua database Firestore telah ditautkan ke sebuah aplikasi App Engine. Saat ditautkan, database Anda memerlukan aplikasi App Engine yang aktif di project yang sama. Tanpa aplikasi App Engine yang aktif, akses baca dan tulis ke database akan dinonaktifkan.

Database Firestore kini disediakan dengan cara dibatalkan tautannya dari App Engine secara default.

Jika database ditautkan ke App Engine, Anda dapat membatalkan tautan database.

App Engine Aktif

Aplikasi App Engine aktif berarti aplikasi tersebut ada dalam project yang sama dan aplikasi ini tidak dinonaktifkan. Aplikasi tersebut tidak harus memiliki penggunaan apa pun. Aplikasi dan database tertaut harus ada di region yang sama.

Jika aplikasi App Engine dinonaktifkan, Anda juga akan menonaktifkan akses ke database Firestore yang ditautkan ke aplikasi tersebut.

Anda dapat memeriksa status pembatalan tautan App Engine menggunakan REST API:

curl  --header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)"

Pada respons, lihat nilai appEngineIntegrationMode. Jika nilainya adalah DISABLED, database Anda tidak akan ditautkan ke aplikasi App Engine.

Jika aplikasi App Engine tertaut dinonaktifkan, Anda juga akan menonaktifkan akses baca dan tulis ke database. Jika hal ini terjadi, halaman Data Firestore di Konsol Google Cloud akan menampilkan opsi untuk membatalkan tautan database Anda dari aplikasi App Engine. Klik Batalkan Tautan Database untuk memulai prosesnya.

Buka Data Firestore

Anda juga dapat membatalkan tautan database menggunakan REST API:

curl -X PATCH \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-type: application/json" \
--data '{"app_engine_integration_mode": "DISABLED"}' \
"https://firestore.googleapis.com/v1/projects/PROJECT_ID/databases/(default)?updateMask=appEngineIntegrationMode"

Saat membatalkan tautan database, Anda dapat menonaktifkan App Engine tanpa memengaruhi akses ke database. Membatalkan tautan adalah operasi permanen. Mungkin perlu waktu hingga lima menit agar operasi pembatalan tautan diterapkan.

Memigrasikan Resource App Engine Terraform

Jika sebelumnya Anda mengelola database Firestore melalui resource Terraform google_app_engine_application, Anda dapat menggunakan resource Terraform google_firestore_database sebagai gantinya.

Untuk petunjuk umum mengenai pengelolaan database Firestore melalui Terraform, lihat Mengotomatiskan pembuatan database.

Membuat resource google_firestore_database

Di file konfigurasi Terraform, buat resource google_firestore_database baru:

firestore.tf

resource "google_firestore_database" "database" {
  project     = "project"
  name        = "(default)"
  location_id = "location"

  type = "database_type" // either "FIRESTORE_NATIVE" or "DATASTORE_MODE"

  app_engine_integration_mode = "DISABLED"

  // Optional, but recommended for safety
  delete_protection_state = "DELETE_PROTECTION_ENABLED"
}

Lihat Lokasi Firestore untuk daftar lokasi yang tersedia. Pilih lokasi yang sesuai dengan database yang ada.

Mengimpor database Firestore yang ada

Pertama, pastikan Firestore API diaktifkan.

Selanjutnya, impor database Firestore yang ada ke status Terraform:

terraform import google_firestore_database.database "(default)"

Kemudian jalankan:

terraform plan

Periksa output untuk memastikan impor berhasil diselesaikan. Jika output menampilkan perubahan kolom, pastikan perubahan ini memang disengaja. Jika output-nya menyertakan baris yang mirip dengan:

google_firestore_database.database must be replaced

lalu periksa file konfigurasi Terraform Anda untuk mengetahui apakah terdapat kesalahan, terutama pada kolom project, location, atau name, lalu jalankan terraform plan lagi. Setiap kolom yang memerlukan Terraform untuk mengganti database akan ditandai dengan # forces replacement dalam output rencana.

Setelah Anda puas dengan output rencana Terraform, jalankan:

terraform apply

Menghapus resource google_app_engine_application

Jika Anda sudah memiliki resource google_app_engine_application di file konfigurasi Terraform, hapus resource tersebut sekarang.

Setelah itu, jalankan sekali lagi:

terraform plan

Anda akan melihat output yang mirip dengan berikut ini:

Terraform will perform the following actions:

  # google_app_engine_application.app will be destroyed
  # (because google_app_engine_application.app is not in configuration)

Setelah Anda puas dengan output rencana, jalankan

terraform apply

Terraform saat ini tidak mendukung penghapusan resource App Engine; meskipun Terraform akan menunjukkan bahwa resource sedang dihancurkan, Terraform sebenarnya tidak akan menghapus aplikasi App Engine. Namun, aplikasi App Engine tidak akan dikelola lagi oleh Terraform.

Persyaratan Firestore API

Sebelumnya, semua database Firestore ditautkan ke aplikasi App Engine. Database Firestore kini disediakan dengan dibatalkan tautannya dari App Engine secara default. Selain itu, semua database, baik yang sudah ada maupun yang baru dibuat, sekarang memiliki persyaratan berikut:

  • Untuk mengelola database dari Google Cloud Console dan gcloud CLI, Firestore API harus diaktifkan di project. Hal ini diperlukan untuk Firestore dalam mode Native dan Firestore dalam database mode Datastore.
  • Saat dijalankan dari Google Cloud Console atau gcloud CLI, operasi administratif di bawah ini akan memerlukan izin IAM berikut:

    • Buat database: datastore.databases.create
    • Lihat metadata database: datastore.databases.getMetadata
    • Edit metadata database: datastore.databases.update

Peran yang telah ditetapkan seperti Pengguna Datastore dan Viewer Datastore menyertakan izin yang diperlukan. Jika membuat peran IAM kustom, Anda mungkin perlu memperbaruinya agar menyertakan izin di atas.

Jika sebelumnya Anda menentukan peran khusus untuk Datastore, peran khusus tersebut mungkin tidak memiliki izin datastore.databases.getMetadata. Pastikan akses berkelanjutan dengan memperbarui peran khusus menggunakan datastore.databases.getMetadata atau menggunakan peran standar.

Mengaktifkan API melalui Terraform

Jika ingin, Anda juga dapat mengaktifkan Firestore API melalui Terraform:

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

Jika memiliki resource google_firestore_database, Anda dapat menambahkan dependensi pada resource google_project_service untuk memastikan bahwa API sudah diaktifkan sebelum Terraform mencoba membuat database:

resource "google_firestore_database" "database" {
  // ...
  depends_on = [google_project_service.firestore]
}