Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Firebase, Google'ın
Terraform olarak değiştirin.
Belirli kaynaklar sağlanmış ve hizmetler etkinleştirilmiş Firebase projeleri oluşturmayı otomatikleştirmek ve standartlaştırmak isteyen bir ekipteyseniz Firebase ile Terraform'u kullanmak sizin için iyi bir seçenek olabilir.
Terraform'u Firebase ile kullanmayla ilgili temel iş akışı aşağıdakileri içerir:
Terraform yapılandırma dosyasını (.tf dosyası) oluşturmak ve
sağlamak istediğiniz altyapıyı (yani, oluşturduğunuz
istediğiniz hizmetleri ve istediğiniz hizmetleri girin).
Şu işlemleri gerçekleştirmek için Terraform ile arayüz oluşturan gcloud CLI komutlarını kullanarak:
.tf dosyasında belirtilen altyapının sağlanmasını sağlar.
Terraform ve Firebase ile neler yapabilirsiniz?
Bu kılavuzda verilen örnek genel iş akışı, Android uygulaması içeren yeni bir Firebase projesi oluşturmaktır. Ancak Terraform ile çok daha fazlasını yapabilirsiniz. Örneğin:
Terraform'u kullanarak mevcut altyapıyı silebilir ve değiştirebilirsiniz.
Terraform kullanarak ürüne özel yapılandırma ve görevleri yönetin. Örneğin:
Cloud Storage paket veya veritabanı örneği oluşturma ve dağıtma
Onlar için Firebase Security Rules.
Tüm bunları yapmak için standart Terraform yapılandırma dosyalarını ve komutlarını kullanabilirsiniz
görevlerden biridir. Size bu konuda yardımcı olmak için
örnek Terraform yapılandırma dosyaları (çeşitli yaygın kullanımlar için)
durumlarda işe yarar.
Firebase ile Terraform'u kullanmak için genel iş akışı
Ön koşullar
Bu kılavuz, Terraform'u Firebase ile kullanmaya giriş amaçlı olduğundan
temel uzmanlık bilgisine sahip olacaksınız. Bu iş akışını başlatmadan önce aşağıdaki ön koşulları tamamladığınızdan emin olun.
Terraform'u yükleme
ve resmi eğitimlerine katılarak Terraform hakkında bilgi edinin.
Kullanıcı hesapları ve hizmet hesaplarıyla ilgili koşulları görüntüleme
Kullanıcı hesabı kullanıyorsanız Firebase Şartları'nı kabul etmeniz gerekir.
Hizmet (Firebase ToS). Şu bilgileri görüntüleyebilirseniz Firebase Hizmet Şartları'nı kabul etmiş olursunuz:
bir Firebase projesini
Firebase konsolu
Terraform'un belirli işlemleri (ör. proje oluşturma) gerçekleştirmesi için aşağıdakiler doğru olmalıdır:
Kullanıcı veya hizmet hesabı,
bu işlemleri yapabilirsiniz.
Kullanıcı veya hizmet hesabı bir Google Cloud kuruluşunun parçasıysa kuruluş politikaları hesabın bu işlemleri yapmasına izin vermelidir.
1. Adım: Terraform yapılandırma dosyası oluşturun ve özelleştirin
Terraform yapılandırma dosyasının iki ana bölümü olmalıdır (bu bölümler,
aşağıda bulabilirsiniz):
Hangi Firebase ürün veya hizmetlerinden bağımsız olarak provider kurulumu gereklidir
dahil edilir.
Yerel dizininizde bir Terraform yapılandırma dosyası (main.tf dosyası gibi) oluşturun.
Bu kılavuzda, provider
kurulumunu ve Terraform'un oluşturmasını istediğiniz tüm altyapıyı içerir. Ancak sağlayıcı ayarını nasıl dahil edeceğiniz konusunda seçenekleriniz olduğunu unutmayın.
provider kurulumunu dahil etme seçeneklerini görüntüleme
provider kurulumunu eklemek için aşağıdaki seçenekleri kullanabilirsiniz:
Terraform yapılandırmanızın geri kalanı için:
1. Seçenek: Tek bir Terraform .tf yapılandırma dosyasının en üstüne ekleyin (bu kılavuzda gösterildiği gibi).
Terraform kullanmaya yeni başlıyorsanız veya yalnızca
Firebase ile Terraform'u denedik.
2. Seçenek: Ayrı bir .tf dosyasına (provider.tf gibi) ekleyin
dosyası), yani .tf için altyapıyı belirttiğiniz dosya
oluştur (main.tf dosyası gibi).
Dahil olmanız gereken büyük bir ekibin parçasıysanız
standartlaştırılmıştır.
Terraform komutlarını çalıştırırken hem provider.tf dosyası hem de
main.tf dosyası aynı dizinde olmalıdır.
main.tf dosyasının en üstüne aşağıdaki provider ayarını ekleyin.
Bu, şu uygulamanın beta sürümü olduğundan google-beta sağlayıcısını kullanmalısınız:
daha fazla bilgi edineceksiniz. Üretimde kullanırken dikkatli olun.
# Terraform configuration to set up providers by version.terraform{required_providers{google-beta={source="hashicorp/google-beta"version="~> 5.0"}}}# Configures the provider to use the resource block's specified project for quota checks.provider"google-beta"{user_project_override=true}# Configures the provider to not use the resource block's specified project for quota checks.# This provider should only be used during project creation and initializing services.provider"google-beta"{alias="no_user_project_override"user_project_override=false}
Şu konu hakkında daha fazla bilgi edinin:
projeyle ilgili farklı özellik türlerini
(bu kılavuzun "kota kontrolü projesi" olarak adlandırdığı öğeler dahil)
Firebase ile Terraform.
Yapılandırma dosyanızı tamamlamak ve
pek çok yolu vardır.
resource blokları kullanarak oluşturulacak altyapıyı belirtin
Terraform yapılandırma dosyanızda (bu kılavuz için, main.tf dosyanız) şunları yapmanız gerekir:
Terraform'un oluşturmasını istediğiniz tüm altyapıyı belirtin (yani,
kaynaklar ve etkinleştirmek istediğiniz tüm hizmetler). İçinde
aşağıda açıklandığı gibi, tüm web sitesi
Terraform'u destekleyen Firebase kaynakları.
main.tf dosyanızı açın.
provider kurulumuna aşağıdaki resource yapılandırmasını ekleyin
engeller.
Bu temel örnek, yeni bir Firebase projesi oluşturur ve ardından
Firebase Android uygulaması.
# Terraform configuration to set up providers by version....# Configures the provider to use the resource block's specified project for quota checks....# Configures the provider to not use the resource block's specified project for quota checks....# Creates a new Google Cloud project.resource"google_project""default"{provider=google-beta.no_user_project_overridename="Project Display Name"project_id="project-id-for-new-project" # Required for any service that requires the Blaze pricing plan # (like Firebase Authentication with GCIP)billing_account="000000-000000-000000" # Required for the project to display in any list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""default"{provider=google-beta.no_user_project_overrideproject=google_project.default.project_idfor_each=toset(["cloudbilling.googleapis.com","cloudresourcemanager.googleapis.com","firebase.googleapis.com", # Enabling the ServiceUsage API allows the new project to be quota checked from now on."serviceusage.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""default"{provider=google-betaproject=google_project.default.project_id # Waits for the required APIs to be enabled.depends_on=[google_project_service.default]}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""default"{provider=google-betaproject=google_project.default.project_iddisplay_name="My Awesome Android app"package_name="awesome.package.name" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.default,]}
Görüntüleyin:
bu örnek yapılandırma dosyasının açıklamalı sürümü
Proje ve uygulama altyapısına aşina değilseniz
aşağıdaki dokümanları inceleyin:
# Terraform configuration to set up providers by version....# Configures the provider to use the resource block's specified project for quota checks....# Configures the provider to not use the resource block's specified project for quota checks....# Creates a new Google Cloud project.resource"google_project""default"{ # Use the provider that enables the setup of quota checks for a new projectprovider=google-beta.no_user_project_overridename="Project Display Name" // learn more about the project nameproject_id="project-id-for-new-project" // learn more about the project ID # Required for any service that requires the Blaze pricing plan # (like Firebase Authentication with GCIP)billing_account="000000-000000-000000" # Required for the project to display in any list of Firebase projects.labels={"firebase"="enabled" // learn more about the Firebase-enabled label}}# Enables required APIs.resource"google_project_service""default"{ # Use the provider without quota checks for enabling APISprovider=google-beta.no_user_project_overrideproject=google_project.default.project_idfor_each=toset(["cloudbilling.googleapis.com","cloudresourcemanager.googleapis.com","firebase.googleapis.com", # Enabling the ServiceUsage API allows the new project to be quota checked from now on."serviceusage.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.# This action essentially "creates a Firebase project" and allows the project to use# Firebase services (like Firebase Authentication) and# Firebase tooling (like the Firebase console).# Learn more about the relationship between Firebase projects and Google Cloud.resource"google_firebase_project""default"{ # Use the provider that performs quota checks from now onprovider=google-betaproject=google_project.default.project_id # Waits for the required APIs to be enabled.depends_on=[google_project_service.default]}# Creates a Firebase Android App in the new project created above.# Learn more about the relationship between Firebase Apps and Firebase projects.resource"google_firebase_android_app""default"{provider=google-betaproject=google_project.default.project_iddisplay_name="My Awesome Android app" # learn more about an app's display namepackage_name="awesome.package.name" # learn more about an app's package name # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.default,]}
2. Adım: Belirtilen altyapıyı oluşturmak için Terraform komutlarını çalıştırın
Kaynakları sağlamak ve main.tf dosyanızda belirtilen hizmetleri etkinleştirmek için main.tf dosyanızla aynı dizinden aşağıdaki komutları çalıştırın.
Bu komutlar hakkında ayrıntılı bilgi için Terraform belgelerine bakın.
dizinini başlatmak ve yüklemek için
Google Terraform sağlayıcısıdır. Bu işlemi aşağıdaki komutu çalıştırarak yapabilirsiniz:
terraform init
Aşağıdaki komutu çalıştırarak main.tf dosyanızda belirtilen altyapıyı oluşturun:
terraform apply
Her şeyin beklendiği gibi sağlandığını veya etkinleştirildiğini onaylayın:
1. Seçenek: Şu komutu çalıştırarak terminalinizde yazdırılan yapılandırmayı görün:
şu komutu kullanın:
Aşağıdaki Firebase ve Google kaynaklarında Terraform desteği sunulmaktadır. İlk olarak
sürekli yeni kaynaklar eklemeye devam ediyoruz. Bu nedenle, Terraform ile yönetmek istediğiniz kaynağı görmüyorsanız kullanılabilir olup olmadığını öğrenmek için kısa süre sonra tekrar kontrol edin veya GitHub deposunda sorun kaydı açarak kaynağı isteyin.
Firebase proje ve uygulama yönetimi
google_firebase_project:
mevcut bir Google Cloud projesinde Firebase hizmetlerini etkinleştir
google_identity_platform_config:
Google Cloud Identity Platform öğesini (GCIP) (Firebase Authentication için arka ucu) etkinleştirin
ve proje düzeyinde kimlik doğrulama ayarları sunun
Terraform'un GCIP ve/veya Firebase Authentication'yi etkinleştireceği projenin Blaze fiyatlandırma planında olması gerekir (yani projenin ilişkili bir Cloud Billing hesabı olmalıdır). Bunu programlı bir şekilde
yapabilirsiniz:
ayarlamak
billing_account
özelliğini google_project kaynağında kullanabilirsiniz.
Bu kaynak, anonim, e-posta/şifre ve telefon kimlik doğrulaması gibi yerel oturum açma yöntemlerinin yanı sıra engelleme işlevleri ve yetkili alanlar gibi daha fazla yapılandırma da sağlar.
Terraform üzerinden Firebase Realtime Database Security Rules dağıtma (nasıl yapılacağını öğrenin)
bu Rules öğelerini dağıt
(programatik seçenekler dahil olmak üzere diğer araçları kullanarak))
google_firestore_document:
Cloud Firestore örneğini bir koleksiyondaki belirli bir dokümanla başlatın
Önemli: Bu başlangıç noktasında gerçek son kullanıcı veya üretim verilerini kullanmayın.
uygulayacaksınız.
Cloud Storage for Firebase
google_firebase_storage_bucket:
mevcut bir Cloud Storage paketini Firebase SDK'ları için erişilebilir hale getirin,
kimlik doğrulaması ve Firebase Security Rules
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
Projeyi bir Cloud Billing hesabıyla (Blaze fiyatlandırma planı) ilişkilendirir
GCIP ile Firebase Authentication için gereklidir),
proje için Firebase hizmetlerini etkinleştirir.
Firebase Authentication uygulamasını GCIP ile kurar,
ve projeye üç farklı uygulama türü kaydediyor.
Firebase Authentication kurulumunu Terraform üzerinden yapmak için GCIP'nin etkinleştirilmesi gerektiğini unutmayın.
# Creates a new Google Cloud project.resource"google_project""auth"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Associates the project with a Cloud Billing account # (required for Firebase Authentication with GCIP).billing_account="000000-000000-000000" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""auth"{provider=google-beta.no_user_project_overrideproject=google_project.auth.project_idfor_each=toset(["cloudbilling.googleapis.com","cloudresourcemanager.googleapis.com","serviceusage.googleapis.com","identitytoolkit.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""auth"{provider=google-betaproject=google_project.auth.project_iddepends_on=[google_project_service.auth,]}# Creates an Identity Platform config.# Also enables Firebase Authentication with Identity Platform in the project if not.resource"google_identity_platform_config""auth"{provider=google-betaproject=google_project.auth.project_id # Auto-deletes anonymous usersautodelete_anonymous_users=true # Configures local sign-in methods, like anonymous, email/password, and phone authentication.sign_in{allow_duplicate_emails=trueanonymous{enabled=true}email{enabled=truepassword_required=false}phone_number{enabled=truetest_phone_numbers={"+11231231234"="000000"}}} # Sets an SMS region policy.sms_region_config{allowlist_only{allowed_regions=["US","CA",]}} # Configures blocking functions.blocking_functions{triggers{event_type="beforeSignIn"function_uri="https://us-east1-${google_project.auth.project_id}.cloudfunctions.net/before-sign-in"}forward_inbound_credentials{refresh_token=trueaccess_token=trueid_token=true}} # Configures a temporary quota for new signups for anonymous, email/password, and phone number.quota{sign_up_quota_config{quota=1000start_time=""quota_duration="7200s"}} # Configures authorized domains.authorized_domains=["localhost","${google_project.auth.project_id}.firebaseapp.com","${google_project.auth.project_id}.web.app",] # Wait for identitytoolkit.googleapis.com to be enabled before initializing Authentication.depends_on=[google_project_service.auth,]}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""auth"{provider=google-betaproject=google_project.auth.project_iddisplay_name="My Android app"package_name="android.package.name" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.auth,]}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""auth"{provider=google-betaproject=google_project.auth.project_iddisplay_name="My Apple app"bundle_id="apple.app.12345" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.auth,]}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""auth"{provider=google-betaproject=google_project.auth.project_iddisplay_name="My Web app" # The other App types (Android and Apple) use "DELETE" by default. # Web apps don't use "DELETE" by default due to backward-compatibility.deletion_policy="DELETE" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.auth,]}
Temel hazırlığı,
varsayılan Firebase Realtime Database örneği
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
proje için Firebase hizmetlerini etkinleştirir.
projenin varsayılan Realtime Database örneğini sağlar
ve projeye üç farklı uygulama türü kaydediyor.
# Creates a new Google Cloud project.resource"google_project""rtdb"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""rtdb"{provider=google-beta.no_user_project_overrideproject=google_project.rtdb.project_idfor_each=toset(["serviceusage.googleapis.com","cloudresourcemanager.googleapis.com","firebasedatabase.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""rtdb"{provider=google-betaproject=google_project.rtdb.project_id}# Provisions the default Realtime Database default instance.resource"google_firebase_database_instance""database"{provider=google-betaproject=google_project.rtdb.project_id # See available locations: https://firebase.google.com/docs/projects/locations#rtdb-locationsregion="name-of-region" # This value will become the first segment of the database's URL.instance_id="${google_project.rtdb.project_id}-default-rtdb"type="DEFAULT_DATABASE" # Wait for Firebase to be enabled in the Google Cloud project before initializing Realtime Database.depends_on=[google_firebase_project.rtdb,]}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""rtdb"{provider=google-betaproject=google_project.rtdb.project_iddisplay_name="My Android app"package_name="android.package.name" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.rtdb,]}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""rtdb"{provider=google-betaproject=google_project.rtdb.project_iddisplay_name="My Apple app"bundle_id="apple.app.12345" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.rtdb,]}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""rtdb"{provider=google-betaproject=google_project.rtdb.project_iddisplay_name="My Web app" # The other App types (Android and Apple) use "DELETE" by default. # Web apps don't use "DELETE" by default due to backward-compatibility.deletion_policy="DELETE" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.rtdb,]}
Birden çok temel hazırlığı yap
Firebase Realtime Database örnek
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
Projeyi bir Cloud Billing hesabıyla (Blaze fiyatlandırma planı) ilişkilendirir
birden çok Realtime Database örneği için gereklidir),
proje için Firebase hizmetlerini etkinleştirir.
birden fazla Realtime Database örneği sağlar
(projenin varsayılan Realtime Database örneği dahil),
ve projeye üç farklı uygulama türü kaydediyor.
# Creates a new Google Cloud project.resource"google_project""rtdb-multi"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Associate the project with a Cloud Billing account # (required for multiple Realtime Database instances).billing_account="000000-000000-000000" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""rtdb-multi"{provider=google-beta.no_user_project_overrideproject=google_project.rtdb-multi.project_idfor_each=toset(["cloudbilling.googleapis.com","serviceusage.googleapis.com","cloudresourcemanager.googleapis.com","firebasedatabase.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""rtdb-multi"{provider=google-betaproject=google_project.rtdb-multi.project_id}# Provisions the default Realtime Database default instance.resource"google_firebase_database_instance""database-default"{provider=google-betaproject=google_project.rtdb-multi.project_id # See available locations: https://firebase.google.com/docs/projects/locations#rtdb-locationsregion="name-of-region" # This value will become the first segment of the database's URL.instance_id="${google_project.rtdb-multi.project_id}-default-rtdb"type="DEFAULT_DATABASE" # Wait for Firebase to be enabled in the Google Cloud project before initializing Realtime Database.depends_on=[google_firebase_project.rtdb-multi,]}# Provisions an additional Realtime Database instance.resource"google_firebase_database_instance""database-additional"{provider=google-betaproject=google_project.rtdb-multi.project_id # See available locations: https://firebase.google.com/docs/projects/locations#rtdb-locations # This location doesn't need to be the same as the default database instance.region="name-of-region" # This value will become the first segment of the database's URL.instance_id="name-of-additional-database-instance"type="USER_DATABASE" # Wait for Firebase to be enabled in the Google Cloud project before initializing Realtime Database.depends_on=[google_firebase_project.rtdb-multi,]}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""rtdb-multi"{provider=google-betaproject=google_project.rtdb-multi.project_iddisplay_name="My Android app"package_name="android.package.name" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.rtdb-multi,]}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""rtdb-multi"{provider=google-betaproject=google_project.rtdb-multi.project_iddisplay_name="My Apple app"bundle_id="apple.app.12345" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.rtdb-multi,]}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""rtdb-multi"{provider=google-betaproject=google_project.rtdb-multi.project_iddisplay_name="My Web app" # The other App types (Android and Apple) use "DELETE" by default. # Web apps don't use "DELETE" by default due to backward-compatibility.deletion_policy="DELETE" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.rtdb-multi,]}
Temel hazırlığı,
Cloud Firestore örnek
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
proje için Firebase hizmetlerini etkinleştirir.
projenin Cloud Firestore örneğini sağlar.
ve projeye üç farklı uygulama türü kaydediyor.
Ayrıca, Cloud Firestore örneği için Firebase Security Rules sağlar.
bir Cloud Firestore dizini oluşturur,
ve çekirdek verileri içeren bir Cloud Firestore dokümanı ekler.
# Creates a new Google Cloud project.resource"google_project""firestore"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""firestore"{provider=google-beta.no_user_project_overrideproject=google_project.firestore.project_idfor_each=toset(["cloudresourcemanager.googleapis.com","serviceusage.googleapis.com","firestore.googleapis.com","firebaserules.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""firestore"{provider=google-betaproject=google_project.firestore.project_id}# Provisions the Firestore database instance.resource"google_firestore_database""firestore"{provider=google-betaproject=google_project.firestore.project_idname="(default)" # See available locations: https://firebase.google.com/docs/projects/locations#default-cloud-locationlocation_id="name-of-region" # "FIRESTORE_NATIVE" is required to use Firestore with Firebase SDKs, authentication, and Firebase Security Rules.type="FIRESTORE_NATIVE"concurrency_mode="OPTIMISTIC" # Wait for Firebase to be enabled in the Google Cloud project before initializing Firestore.depends_on=[google_firebase_project.firestore,]}# Creates a ruleset of Firestore Security Rules from a local file.resource"google_firebaserules_ruleset""firestore"{provider=google-betaproject=google_project.firestore.project_idsource{files{name="firestore.rules" # Write security rules in a local file named "firestore.rules". # Learn more: https://firebase.google.com/docs/firestore/security/get-startedcontent=file("firestore.rules")}} # Wait for Firestore to be provisioned before creating this ruleset.depends_on=[google_firestore_database.firestore,]}# Releases the ruleset for the Firestore instance.resource"google_firebaserules_release""firestore"{provider=google-betaname="cloud.firestore" # must be cloud.firestoreruleset_name=google_firebaserules_ruleset.firestore.nameproject=google_project.firestore.project_id # Wait for Firestore to be provisioned before releasing the ruleset.depends_on=[google_firestore_database.firestore,]}# Adds a new Firestore index.resource"google_firestore_index""indexes"{provider=google-betaproject=google_project.firestore.project_idcollection="quiz"query_scope="COLLECTION"fields{field_path="question"order="ASCENDING"}fields{field_path="answer"order="ASCENDING"} # Wait for Firestore to be provisioned before adding this index.depends_on=[google_firestore_database.firestore,]}# Adds a new Firestore document with seed data.# Don't use real end-user or production data in this seed document.resource"google_firestore_document""doc"{provider=google-betaproject=google_project.firestore.project_idcollection="quiz"document_id="question-1"fields="{\"question\":{\"stringValue\":\"Favorite Database\"},\"answer\":{\"stringValue\":\"Firestore\"}}" # Wait for Firestore to be provisioned before adding this document.depends_on=[google_firestore_database.firestore,]}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""firestore"{provider=google-betaproject=google_project.firestore.project_iddisplay_name="My Android app"package_name="android.package.name" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.firestore,]}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""firestore"{provider=google-betaproject=google_project.firestore.project_iddisplay_name="My Apple app"bundle_id="apple.app.12345" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.firestore,]}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""firestore"{provider=google-betaproject=google_project.firestore.project_iddisplay_name="My Web app" # The other App types (Android and Apple) use "DELETE" by default. # Web apps don't use "DELETE" by default due to backward-compatibility.deletion_policy="DELETE" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.firestore,]}
Bu, firestore.rules adlı yerel bir dosyada bulunması gereken Cloud Firestore Security Rules kural kümesidir.
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
proje için Firebase hizmetlerini etkinleştirir.
projenin varsayılan Cloud Storage paketini sağlar,
ve projeye üç farklı uygulama türü kaydediyor.
Ayrıca Cloud Storage paketi için Firebase Security Rules sağlar.
ve pakete bir dosya yükler.
# Creates a new Google Cloud project.resource"google_project""storage"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""storage"{provider=google-beta.no_user_project_overrideproject=google_project.storage.project_idfor_each=toset(["serviceusage.googleapis.com","cloudresourcemanager.googleapis.com","firebaserules.googleapis.com","firebasestorage.googleapis.com","storage.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""storage"{provider=google-betaproject=google_project.storage.project_id}# Provisions the default Cloud Storage bucket for the project via Google App Engine.resource"google_app_engine_application""default"{provider=google-betaproject=google_project.storage.project_id # See available locations: https://firebase.google.com/docs/projects/locations#default-cloud-location # This will set the location for the default Storage bucket and the App Engine App.location_id="name-of-region-for-default-bucket" # If you use Firestore, uncomment this to make sure Firestore is provisioned first. # depends_on = [ # google_firestore_database.firestore # ]}# Makes the default Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.resource"google_firebase_storage_bucket""default-bucket"{provider=google-betaproject=google_project.storage.project_idbucket_id=google_app_engine_application.default.default_bucket}# Creates a ruleset of Cloud Storage Security Rules from a local file.resource"google_firebaserules_ruleset""storage"{provider=google-betaproject=google_project.storage.project_idsource{files{ # Write security rules in a local file named "storage.rules". # Learn more: https://firebase.google.com/docs/storage/security/get-startedname="storage.rules"content=file("storage.rules")}} # Wait for the default Storage bucket to be provisioned before creating this ruleset.depends_on=[google_firebase_project.storage,]}# Releases the ruleset to the default Storage bucket.resource"google_firebaserules_release""default-bucket"{provider=google-betaname="firebase.storage/${google_app_engine_application.default.default_bucket}"ruleset_name="projects/${google_project.storage.project_id}/rulesets/${google_firebaserules_ruleset.storage.name}"project=google_project.storage.project_id}# Uploads a new file to the default Storage bucket.# Don't use real end-user or production data in this file.resource"google_storage_bucket_object""cat-picture"{provider=google-betaname="cat.png"source="path/to/cat.png"bucket=google_app_engine_application.default.default_bucket}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""storage"{provider=google-betaproject=google_project.storage.project_iddisplay_name="My Android app"package_name="android.package.name" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.storage,]}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""storage"{provider=google-betaproject=google_project.storage.project_iddisplay_name="My Apple app"bundle_id="apple.app.12345" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.storage,]}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""storage"{provider=google-betaproject=google_project.storage.project_iddisplay_name="My Web app" # The other App types (Android and Apple) use "DELETE" by default. # Web apps don't use "DELETE" by default due to backward-compatibility.deletion_policy="DELETE" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.storage,]}
Bu, yerel dosyada olması gereken Cloud Storage Security Rules kural kümesidir
storage.rules adlı.
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
Projeyi bir Cloud Billing hesabıyla (Blaze fiyatlandırma planı) ilişkilendirir
birden fazla paket için gereklidir),
proje için Firebase hizmetlerini etkinleştirir.
birden fazla Cloud Storage paketi sağlar
(projenin varsayılan Cloud Storage paketi dahil),
ve projeye üç farklı uygulama türü kaydediyor.
Ayrıca Cloud Storage paketleri için Firebase Security Rules sağlar.
ve varsayılan Cloud Storage paketine bir dosya yükler.
# Creates a new Google Cloud project.resource"google_project""storage-multi"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Associates the project with a Cloud Billing account # (required for multiple Cloud Storage buckets).billing_account="000000-000000-000000" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""storage-multi"{provider=google-beta.no_user_project_overrideproject=google_project.storage-multi.project_idfor_each=toset(["cloudbilling.googleapis.com","serviceusage.googleapis.com","cloudresourcemanager.googleapis.com","firebaserules.googleapis.com","firebasestorage.googleapis.com","storage.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""storage-multi"{provider=google-betaproject=google_project.storage-multi.project_id}# Provisions the default Cloud Storage bucket for the project via Google App Engine.resource"google_app_engine_application""default-multi"{provider=google-betaproject=google_project.storage-multi.project_id # See available locations: https://firebase.google.com/docs/projects/locations#default-cloud-location # This will set the location for the default Storage bucket and the App Engine App.location_id="name-of-region-for-default-bucket" # If you use Firestore, uncomment this to make sure Firestore is provisioned first. # depends_on = [ # google_firestore_database.firestore # ]}# Provisions an additional Cloud Storage bucket.# Additional Cloud Storage buckets are not provisioned via App Engine.resource"google_storage_bucket""bucket-multi"{provider=google-betaproject=google_project.storage-multi.project_idname="name-of-additional-storage-bucket" # See available locations: https://cloud.google.com/storage/docs/locations#available-locations # This location does not need to be the same as the default Storage bucket.location="name-of-region-for-additional-bucket"}# Makes the default Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.resource"google_firebase_storage_bucket""default-bucket-multi"{provider=google-betaproject=google_project.storage-multi.project_idbucket_id=google_app_engine_application.default-multi.default_bucket}# Makes the additional Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.resource"google_firebase_storage_bucket""bucket-multi"{provider=google-betaproject=google_project.storage-multi.project_idbucket_id=google_storage_bucket.bucket-multi.name}# Creates a ruleset of Firebase Security Rules from a local file.resource"google_firebaserules_ruleset""storage-multi"{provider=google-betaproject=google_project.storage-multi.project_idsource{files{ # Write security rules in a local file named "storage.rules" # Learn more: https://firebase.google.com/docs/storage/security/get-startedname="storage.rules"content=file("storage.rules")}} # Wait for the Storage buckets to be provisioned before creating this ruleset.depends_on=[google_firebase_project.storage-multi,]}# Releases the ruleset to the default Storage bucket.resource"google_firebaserules_release""default-bucket-multi"{provider=google-betaname="firebase.storage/${google_app_engine_application.default-multi.default_bucket}"ruleset_name="projects/${google_project.storage-multi.project_id}/rulesets/${google_firebaserules_ruleset.storage-multi.name}"project=google_project.storage-multi.project_id}# Releases the ruleset to the additional Storage bucket.resource"google_firebaserules_release""bucket-multi"{provider=google-betaname="firebase.storage/${google_storage_bucket.bucket-multi.name}"ruleset_name="projects/${google_project.storage-multi.project_id}/rulesets/${google_firebaserules_ruleset.storage-multi.name}"project=google_project.storage-multi.project_id}# Uploads a new file to the default Storage bucket.# Do not use real end-user or production data in this file.resource"google_storage_bucket_object""cat-picture-multi"{provider=google-betaname="cat.png"source="path/to/cat.png"bucket=google_app_engine_application.default-multi.default_bucket}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""storage-multi"{provider=google-betaproject=google_project.storage-multi.project_iddisplay_name="My Android app"package_name="android.package.name" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.storage-multi,]}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""storage-multi"{provider=google-betaproject=google_project.storage-multi.project_iddisplay_name="My Apple app"bundle_id="apple.app.12345" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.storage-multi,]}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""storage-multi"{provider=google-betaproject=google_project.storage-multi.project_iddisplay_name="My Web app" # The other App types (Android and Apple) use "DELETE" by default. # Web apps don't use "DELETE" by default due to backward-compatibility.deletion_policy="DELETE" # Wait for Firebase to be enabled in the Google Cloud project before creating this App.depends_on=[google_firebase_project.storage-multi,]}
Bu, yerel dosyada olması gereken Cloud Storage Security Rules kural kümesidir
storage.rules adlı.
Temel hazırlığı,
Cloud Firestore örneği ve varsayılan Cloud Storage paketi
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
proje için Firebase hizmetlerini etkinleştirir.
Cloud Firestore örneğini sağlar ve
ardından varsayılan Cloud Storage paketini sağlar.
Ayrıca Cloud Firestore örneği ve varsayılan Cloud Storage paketi için Firebase Security Rules hazırlığı yapar.
# Creates a new Google Cloud project.resource"google_project""fs"{ # fs = Firestore + Storageprovider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""fs"{provider=google-beta.no_user_project_overrideproject=google_project.fs.project_idfor_each=toset(["serviceusage.googleapis.com","cloudresourcemanager.googleapis.com","firebaserules.googleapis.com","firebasestorage.googleapis.com","storage.googleapis.com","firestore.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accidentdisable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""fs"{provider=google-betaproject=google_project.fs.project_id}#### Set up Firestore before default Cloud Storage bucket ##### Provisions the Firestore database instance.resource"google_firestore_database""firestore-fs"{provider=google-betaproject=google_project.fs.project_idname="(default)" # See available locations: https://firebase.google.com/docs/projects/locations#default-cloud-locationlocation_id="name-of-region" # "FIRESTORE_NATIVE" is required to use Firestore with Firebase SDKs, authentication, and Firebase Security Rules.type="FIRESTORE_NATIVE"concurrency_mode="OPTIMISTIC" # Wait for Firebase to be enabled in the Google Cloud project before initializing Firestore.depends_on=[google_firebase_project.fs,]}# Creates a ruleset of Firestore Security Rules from a local file.resource"google_firebaserules_ruleset""firestore-fs"{provider=google-betaproject=google_project.fs.project_idsource{files{ # Write security rules in a local file named "firestore.rules". # Learn more: https://firebase.google.com/docs/firestore/security/get-startedname="firestore.rules"content=file("firestore.rules")}} # Wait for Firestore to be provisioned before creating this ruleset.depends_on=[google_firestore_database.firestore-fs]}# Releases the ruleset for the Firestore instance.resource"google_firebaserules_release""firestore-fs"{provider=google-betaname="cloud.firestore" # must be cloud.firestoreruleset_name=google_firebaserules_ruleset.firestore-fs.nameproject=google_project.fs.project_id # Wait for Firestore to be provisioned before releasing the ruleset.depends_on=[google_firestore_database.firestore-fs,]}#### Set up default Cloud Storage default bucket after Firestore ##### Provisions the default Cloud Storage bucket for the project via Google App Engine.resource"google_app_engine_application""default-bucket-fs"{provider=google-betaproject=google_project.fs.project_id # See available locations: https://firebase.google.com/docs/projects/locations#default-cloud-location # This will set the location for the default Storage bucket and the App Engine App.location_id="name-of-region" # Must be in the same location as Firestore (above) # Wait for Firestore to be provisioned first. # Otherwise, the Firestore instance will be provisioned in Datastore mode (unusable by Firebase).depends_on=[google_firestore_database.firestore-fs,]}# Makes the default Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.resource"google_firebase_storage_bucket""default-bucket-fs"{provider=google-betaproject=google_project.fs.project_idbucket_id=google_app_engine_application.default-bucket-fs.default_bucket}# Creates a ruleset of Cloud Storage Security Rules from a local file.resource"google_firebaserules_ruleset""default-bucket-fs"{provider=google-betaproject=google_project.fs.project_idsource{files{ # Write security rules in a local file named "storage.rules". # Learn more: https://firebase.google.com/docs/storage/security/get-startedname="storage.rules"content=file("storage.rules")}} # Wait for the Cloud Storage bucket to be provisioned before creating this ruleset.depends_on=[google_firebase_project.fs,]}# Releases the ruleset to the default Storage bucket.resource"google_firebaserules_release""default-bucket-fs"{provider=google-betaname="firebase.storage/${google_app_engine_application.default-bucket-fs.default_bucket}"ruleset_name="projects/${google_project.fs.project_id}/rulesets/${google_firebaserules_ruleset.default-bucket-fs.name}"project=google_project.fs.project_id}
Bu, yerel dosyada olması gereken Cloud Firestore Security Rules kural kümesidir
firestore.rules adlı.
API kaynaklarını koruma
Firebase App Check ile birlikte
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
proje için Firebase hizmetlerini etkinleştirir ve
Cloud Firestore için Firebase App Check oluşturur ve uygulanmasına olanak tanır
böylece yalnızca Android uygulamanızdan erişilebilmesini sağlayın.
# Creates a new Google Cloud project.resource"google_project""appcheck"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""services"{provider=google-beta.no_user_project_overrideproject=google_project.appcheck.project_idfor_each=toset(["cloudresourcemanager.googleapis.com","firebase.googleapis.com","firebaseappcheck.googleapis.com","firestore.googleapis.com","serviceusage.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created earlier.resource"google_firebase_project""appcheck"{provider=google-betaproject=google_project.appcheck.project_iddepends_on=[google_project_service.services]}# Provisions the Firestore database instance.resource"google_firestore_database""database"{provider=google-betaproject=google_firebase_project.appcheck.projectname="(default)" # See available locations: https://firebase.google.com/docs/projects/locations#default-cloud-locationlocation_id="name-of-region" # "FIRESTORE_NATIVE" is required to use Firestore with Firebase SDKs, authentication, and Firebase Security Rules.type="FIRESTORE_NATIVE"concurrency_mode="OPTIMISTIC" # Wait for Firebase to be enabled in the Google Cloud project before initializing Firestore.depends_on=[google_firebase_project.appcheck,]}# Creates a Firebase Android App in the new project created earlier.resource"google_firebase_android_app""appcheck"{provider=google-betaproject=google_firebase_project.appcheck.projectdisplay_name="Play Integrity app"package_name="package.name.playintegrity"sha256_hashes=[ # TODO: insert your Android app's SHA256 certificate]}# It takes a while for App Check to recognize the new app# If your app already exists, you don't have to wait 30 seconds.resource"time_sleep""wait_30s"{depends_on=[google_firebase_android_app.appcheck]create_duration="30s"}# Register the Android app with the Play Integrity providerresource"google_firebase_app_check_play_integrity_config""appcheck"{provider=google-betaproject=google_firebase_project.appcheck.projectapp_id=google_firebase_android_app.appcheck.app_iddepends_on=[time_sleep.wait_30s,google_firestore_database.database]lifecycle{precondition{condition=length(google_firebase_android_app.appcheck.sha256_hashes)>0error_message="Provide a SHA-256 certificate on the Android App to use App Check"}}}# Enable enforcement of App Check for Firestoreresource"google_firebase_app_check_service_config""firestore"{provider=google-betaproject=google_firebase_project.appcheck.projectservice_id="firestore.googleapis.com"depends_on=[google_project_service.services]}
Yükleyin:
Firebase Extension örneği
Bu yapılandırma ile yeni bir Google Cloud projesi oluşturulur.
proje için Firebase hizmetlerini etkinleştirir ve
yeni bir Firebase Extension örneğini yükler
için iyi bir fırsattır. Örnek zaten mevcutsa
parametreleri, yapılandırmada sağlanan değerlere göre güncellenir.
# Creates a new Google Cloud project.resource"google_project""extensions"{provider=google-beta.no_user_project_overridefolder_id="folder-id-for-new-project"name="Project Display Name"project_id="project-id-for-new-project" # Associates the project with a Cloud Billing account # (required to use Firebase Extensions).billing_account="000000-000000-000000" # Required for the project to display in a list of Firebase projects.labels={"firebase"="enabled"}}# Enables required APIs.resource"google_project_service""extensions"{provider=google-beta.no_user_project_overrideproject=google_project.extensions.project_idfor_each=toset(["cloudbilling.googleapis.com","cloudresourcemanager.googleapis.com","serviceusage.googleapis.com","firebase.googleapis.com","firebaseextensions.googleapis.com",])service=each.key # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables Firebase services for the new project created above.resource"google_firebase_project""extensions"{provider=google-betaproject=google_project.extensions.project_iddepends_on=[google_project_service.extensions,]}# Installs an instance of the "Translate Text in Firestore" extension.# Or updates the extension if the specified instance already exists.resource"google_firebase_extensions_instance""translation"{provider=google-betaproject=google_project.extensions.project_idinstance_id="translate-text-in-firestore"config{extension_ref="firebase/firestore-translate-text"params={COLLECTION_PATH="posts/comments/translations"DO_BACKFILL=trueLANGUAGES="ar,en,es,de,fr"INPUT_FIELD_NAME="input"LANGUAGES_FIELD_NAME="languages"OUTPUT_FIELD_NAME="translated"}system_params={"firebaseextensions.v1beta.function/location"="us-central1""firebaseextensions.v1beta.function/memory"="256""firebaseextensions.v1beta.function/minInstances"="0""firebaseextensions.v1beta.function/vpcConnectorEgressSettings"="VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED"}}}
Sorun giderme ve SSS
Şunu istiyorsunuz:
tüm farklı nitelikler hakkında daha fazla bilgi edinmek için
project ve user_project_override)
Bu kılavuzda, "projeler" ile çalışırken aşağıdaki Terraform özellikleri kullanılmaktadır.
resource bloğunda project
Önerilir: Mümkün olduğunda her reklam öğesi içine project özelliğini ekleyin.
resource blok
Terraform bir proje özelliği ekleyerek altyapıyı oluşturur
belirtilen projedeki kaynak blokunda belirtilir. Bu kılavuz ve
örnek yapılandırma dosyalarının tümü bu uygulamayı kullanır.
project ile ilgili resmi Terraform belgelerini inceleyin.
provider blokunda user_project_override
Çoğu kaynağın temel hazırlığını yapmak için
user_project_override = true: Bu, kotanızı kendi kotanızla kontrol etmek anlamına gelir.
Firebase projesi. Ancak yeni projenizi, bu değişimin kabul edilmesine
yardımcı olacak şekilde
kota kontrolleri için öncelikle user_project_override = false kullanmanız gerekir.
Aşağıdaki hatayı alırsınız:
generic::permission_denied: Firebase Tos Not Accepted.
gcloud CLIKomutları yürütmek için kullandığınız kullanıcı hesabının Firebase Hizmet Şartları'nı (Firebase Hizmet Şartları) kabul ettiğinden emin olun.
Bu kontrolü, kullanıcı hesabında oturum açmış bir tarayıcı kullanarak ve
mevcut bir Firebase projesini
Firebase konsolu. Mevcut bir Firebase projesini görüntüleyebiliyorsanız kullanıcı hesabı Firebase Hizmet Şartları'nı kabul etmiş demektir.
Mevcut bir Firebase projesini görüntüleyemiyorsanız kullanıcı hesabı
Firebase Hizmet Şartları'nı kabul etmemiştir. Bunu düzeltmek için yeni bir dosya oluşturun
Firebase projesi üzerinden
Firebase konsoluna giderek şunu kabul edin:
Proje oluşturma kapsamında Firebase Hizmet Şartları. Bunu hemen silebilirsiniz
projeyi yönetmek için Yönetici Konsolu'ndaki Proje Ayarları'nı kullanabilirsiniz.
terraform apply çalıştırdıktan sonra şu hatayı alırsınız:
generic::permission_denied: IAM authority does not have the
permission.
Birkaç dakika bekleyip terraform apply uygulamasını tekrar çalıştırmayı deneyin.
İlgili içeriği oluşturmak için kullanılan
kaynak oluşturma başarısız oldu, ancak terraform apply komutunu çalıştırdığınızda
yine ALREADY_EXISTS yazıyor.
Bu durum, çeşitli sistemlerdeki yayılım gecikmesinden kaynaklanıyor olabilir. Bu sorunu çözmeyi deneyin
kaynağı Terraform durumuna içe aktararak
terraform import Ardından terraform apply öğesini tekrar çalıştırmayı deneyin.
Her kaynağı nasıl içe aktaracağınızı "İçe aktarma" bölümünden öğrenebilirsiniz. bölümünün
Terraform dokümanları (örneğin,
"İçe aktar" Cloud Firestore belgeleri) bulabilirsiniz.
Proje yöneticileri
Cloud Firestore, şu hatayı alıyorsunuz: Error creating Index: googleapi:
Error 409;...Concurrent access -- try again
Hatanın ortaya koyduğu gibi, Terraform birden fazla dizin sağlamaya çalışıyor olabilir
ve/veya aynı anda belge oluşturan
bir belge eşzamanlılık hatasına yol açabilir.
terraform apply'ü tekrar çalıştırmayı deneyin.
Kazanacağınız tutar
şu hata mesajını verir:
"you may need to specify 'X-Goog-User-Project' HTTP header for quota and
billing purposes"
Bu hata, Terraform'un hangi projenin kotayı kontrol edeceğini bilmediği anlamına gelir
. Sorun gidermek için resource bloğunda aşağıdakileri kontrol edin:
project özelliği için bir değer belirttiğinizden emin olun.
Sağlayıcıyı user_project_override = true ile kullandığınızdan emin olun (takma ad yok). Firebase örneklerinde bu değer google-beta'tır.
Bir
yeni Google Cloud projesinde,
yeni proje zaten mevcuttur.
Proje kimliğinin zaten mevcut olmasının olası nedenleri şunlardır:
Bu kimlikle ilişkilendirilen proje başka birine aittir.
Sorunu çözmek için: Başka bir proje kimliği seçin.
Bu kimlikle ilişkili proje yakın zamanda silindi (geri yüklenebilir şekilde silme modunda)
durum).
Sorunu çözmek için: Kimlikle ilişkili projenin
ardından teslim edilecek materyali kullanarak
projects.get REST API.
Bu kimlikle ilişkilendirilmiş proje, geçerli kullanıcı altında doğru şekilde bulunuyor. CEVAP
hatanın olası nedeni, daha önceki bir terraform apply
kesintiye uğrar.
Sorunu çözmek için: Aşağıdaki komutları çalıştırın: terraform import google_project.default PROJECT_ID
ve ardından terraform import google_firebase_project.default PROJECT_ID
Cloud Firestore ve ardından Cloud Storage (google_app_engine_application üzerinden) temel hazırlığı
App Engine uygulaması için Cloud Firestore örneği gerekir ancak yalnızca şunu yapabilirsiniz:
proje başına bir Cloud Firestore örneğiniz olmalıdır. Hata mesajında da belirtildiği gibi
Bir örnekte projenin Cloud Firestore örneğini zaten sağladıysanız
Cloud Firestore için temel hazırlık yapmaya çalışırsanız App Engine hatası verir
farklı bir konumda olması gerekir. App Engine şunu düşünüyor:
"yeniden temel hazırlığı yap" zaten mevcut Cloud Firestore örneği.
Bu hatayı gidermek üzere hem Cloud Firestore hem de Cloud Firestore için aynı konumu kullanın
App Engine uygulaması. Bir Cloud Storage paketine ihtiyacınız varsa
Cloud Firestore konumundan farklı bir konum söz konusuysa ek paketler sağlayabilirsiniz
(bkz.
birden çok Cloud Storage oluşturmak için örnek yapılandırma
paket) bakın.
Zaman
Cloud Storage (
google_app_engine_application), ardından Cloud Firestore,
şu hata mesajını verir:
Error: Error creating Database: googleapi: Error 409: Database already
exists. Please use another database_id.
Projenin varsayılan Cloud Storage paketini sağladığınızda (
google_app_engine_application) ve projede henüz
Cloud Firestore örnek, ardından otomatik olarak google_app_engine_application
projenin Cloud Firestore örneğini sağlar.
Projenizin Cloud Firestore örneği zaten sağlanmışsa
Açıkça bir temel hazırlığı yapmaya çalışırsanız google_firestore_database hatası verir
Cloud Firestore örneği.
Projenin Cloud Firestore örneği sağlandıktan sonra işlemi gerçekleştiremezsiniz
"yeniden temel hazırlığı yap" veya yerini değiştirebilirsiniz. Hatanın oluşmasını önlemek için yapılandırma dosyanızdan google_firestore_database kaynak bloğunu kaldırın.
Yine de Cloud Firestore adresinin temel hazırlığının
projenin varsayılan Cloud Storage paketi (nedenini öğrenmek için aşağıdaki kenara bakın).