Firebase अब Google Analytics के साथ काम करना शुरू कर देगा
टेराफ़ॉर्म.
अगर आप किसी ऐसी टीम में हैं जो Firebase बनाने की प्रोसेस को ऑटोमेट और स्टैंडर्ड बनाना चाहती है
खास संसाधनों के साथ प्रोजेक्ट और सेवाओं को चालू किया हो, फिर इनका इस्तेमाल किया जा रहा हो
Firebase के साथ टेराफ़ॉर्म इस्तेमाल करना आपके लिए सही हो सकता है.
Firebase के साथ Turaform का इस्तेमाल करने के लिए बुनियादी वर्कफ़्लो में ये शामिल हैं:
ऐसी टेरेस कॉन्फ़िगरेशन फ़ाइल (.tf फ़ाइल) बनाना और उसे पसंद के मुताबिक बनाना जो
वह इन्फ़्रास्ट्रक्चर तय करता है जिसे आपको प्रावधान करना है (यानी, ऐसे संसाधन
जिन सेवाओं को आप चालू करना चाहते हैं.
टेराफ़ॉर्म के साथ इंटरफ़ेस करने वाले gcloud CLI कमांड का इस्तेमाल करके
.tf फ़ाइल में बताए गए इन्फ़्रास्ट्रक्चर का प्रावधान करें.
टेरेस और Firebase की मदद से क्या-क्या किया जा सकता है?
इस गाइड में सामान्य वर्कफ़्लो का उदाहरण
Android ऐप्लिकेशन के साथ एक नया Firebase प्रोजेक्ट बना रहा है. हालाँकि, आपको बहुत कुछ किया जा सकता है
टेराफ़ॉर्म के और भी कई वर्शन, जैसे:
terraform का इस्तेमाल करके मौजूदा इन्फ़्रास्ट्रक्चर मिटाएं और उसमें बदलाव करें.
टेराफ़ॉर्म का इस्तेमाल करके, प्रॉडक्ट के हिसाब से कॉन्फ़िगरेशन और टास्क मैनेज करना, जैसे कि:
साइन-इन करने की सेवा देने वाली Firebase Authentication कंपनियां चालू की जा रही हैं.
Cloud Storage बकेट या डेटाबेस इंस्टेंस बनाना और डिप्लॉय करना
Firebase Security Rules दिए गए हैं.
इन सभी कामों को पूरा करने के लिए, स्टैंडर्ड टेराफ़ॉर्म कॉन्फ़िगरेशन फ़ाइलों और कमांड का इस्तेमाल किया जा सकता है
टास्क. इसमें आपकी मदद करने के लिए, हमने
कई सामान्य इस्तेमाल के लिए, Terraform कॉन्फ़िगरेशन फ़ाइलों का सैंपल
मामले.
Firebase के साथ Turaform का इस्तेमाल करने के लिए, सामान्य वर्कफ़्लो
ज़रूरी शर्तें
इस गाइड में, Firebase के साथ Turaform का इस्तेमाल करने के बारे में जानकारी दी गई है. इसलिए, इसे
टेराफ़ॉर्म के साथ बुनियादी कुशलता. पक्का करें कि आपने ये टास्क पूरे कर लिए हों
इस वर्कफ़्लो को शुरू करने से पहले ज़रूरी शर्तें देखें.
Terraform इंस्टॉल करें
टेराफ़ॉर्म के आधिकारिक ट्यूटोरियल की मदद से, इसके बारे में जानें.
उपयोगकर्ता खातों और सेवा खातों के लिए ज़रूरी शर्तें देखें
अगर किसी उपयोगकर्ता खाते का इस्तेमाल किया जा रहा है, तो आपको Firebase की शर्तें स्वीकार करनी होंगी
सेवा (Firebase की सेवा की शर्तें). अगर आपको लगता है कि आपने Firebase की सेवा की शर्तों को स्वीकार कर लिया है, तो
Firebase प्रोजेक्ट
Firebase कंसोल
टेरेस पर कुछ कार्रवाइयां करने (जैसे, प्रोजेक्ट बनाना) के लिए,
निम्नलिखित सही होना चाहिए:
उपयोगकर्ता या सेवा खाते के पास
कार्रवाई नहीं करनी होगी.
अगर उपयोगकर्ता या सेवा खाता किसी Google Cloud संगठन का हिस्सा है,
तो संगठन की नीतियों को खाते को ये कार्रवाइयां करने की अनुमति देनी होगी.
पहला चरण: Terraform कॉन्फ़िगरेशन फ़ाइल बनाना और उसे पसंद के मुताबिक बनाना
टेराफ़ॉर्म कॉन्फ़िगरेशन फ़ाइल के लिए दो मुख्य सेक्शन की ज़रूरत होती है (इन सेक्शन के बारे में पूरी जानकारी दी गई है)
नीचे दिया गया है):
provider सेटअप करना ज़रूरी है, भले ही कोई भी Firebase प्रॉडक्ट या सेवा हो
शामिल हैं.
अपने डिवाइस में, कोई टेरेस कॉन्फ़िगरेशन फ़ाइल बनाएं (जैसे, main.tf फ़ाइल)
डायरेक्ट्री.
इस गाइड में, आपको provider, दोनों के बारे में बताने के लिए इस कॉन्फ़िगरेशन फ़ाइल का इस्तेमाल करना होगा
सेटअप और वह सभी इन्फ़्रास्ट्रक्चर शामिल हैं जिसे आपकोterraform को बनाना है. ध्यान दें,
हालांकि, आपके पास प्रोवाइडर सेटअप को शामिल करने के विकल्प होते हैं.
इसके लिए विकल्प देखें
provider सेटअप शामिल करने के लिए
provider सेटअप को शामिल करने के लिए, आपके पास ये विकल्प हैं
आपके Teraform का बाकी कॉन्फ़िगरेशन:
पहला विकल्प: इसे किसी एक टेराफ़ॉर्म .tf कॉन्फ़िगरेशन के सबसे ऊपर शामिल करें
फ़ाइल (जैसा कि इस गाइड में दिखाया गया है).
इस विकल्प का इस्तेमाल तब करें, जब आपने Turaform का इस्तेमाल शुरू किया हो या बस
Firebase के साथ टेराफ़ॉर्म इस्तेमाल करके देखें.
दूसरा विकल्प: इसे किसी अलग .tf फ़ाइल में शामिल करें. जैसे, provider.tf
फ़ाइल से अलग है, जहां आप .tf फ़ाइल के अलावा
बनाएं (जैसे main.tf फ़ाइल).
अगर आप किसी ऐसी बड़ी टीम का हिस्सा हैं जिसे
सेटअप के लिए स्टैंडर्ड तय करते हैं.
टेराफ़ॉर्म के निर्देशों को चलाते समय, provider.tf फ़ाइल और
main.tf फ़ाइल उसी डायरेक्ट्री में होनी चाहिए.
main.tf फ़ाइल के सबसे ऊपर, यह provider सेटअप शामिल करें.
यह बीटा वर्शन में रिलीज़ है, इसलिए आपको google-beta की सेवा देने वाली कंपनी का इस्तेमाल करना होगा
टेराफ़ॉर्म के साथ Firebase का इस्तेमाल करके. प्रोडक्शन में इस्तेमाल करते समय सावधानी बरतें.
# Terraform configuration to set up providers by version.terraform{required_providers{google-beta={source="hashicorp/google-beta"version="~> 4.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}
ज़्यादा जानने के लिए,
प्रोजेक्ट से जुड़े अलग-अलग टाइप के एट्रिब्यूट
(इसमें यह जानकारी भी शामिल है कि इस गाइड में "कोटे की जांच वाला प्रोजेक्ट" क्या है) का इस्तेमाल करते समय
Firebase के साथ टेराफ़ॉर्म.
अपनी कॉन्फ़िगरेशन फ़ाइल को पूरा करने के लिए, अगले सेक्शन पर जाएं और यह तय करें कि
बनाया जा सकता है.
यह बताएं कि resource ब्लॉक का इस्तेमाल करके कौनसा इन्फ़्रास्ट्रक्चर बनाना है
आपकी टेराफ़ॉर्म कॉन्फ़िगरेशन फ़ाइल में (इस गाइड, आपकी main.tf फ़ाइल के लिए), आपको ये काम करने होंगे
उस सभी इंफ़्रास्ट्रक्चर के बारे में बताएं जो आपको Tenraform बनाने के लिए चाहिए (यानी सभी
जिन संसाधनों का आपको प्रावधान करना है और वे सभी सेवाएं जिन्हें आपको चालू करना है). तय सीमा में
इस गाइड में, सभी लिंक की पूरी सूची देखें
Terraform के साथ काम करने वाले Firebase के संसाधन.
अपनी main.tf फ़ाइल खोलें.
provider के सेटअप में, resource के लिए यह कॉन्फ़िगरेशन शामिल करें
ब्लॉक.
इस बुनियादी उदाहरण से एक नया Firebase प्रोजेक्ट बनता है और यह एक नया Firebase प्रोजेक्ट बनाता है
उस प्रोजेक्ट में मौजूद Firebase का Android ऐप्लिकेशन.
# 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,]}
ज़्यादा देखें
इस उदाहरण कॉन्फ़िगरेशन फ़ाइल का व्याख्या किया गया वर्शन
अगर आपको प्रोजेक्ट और ऐप्लिकेशन के इन्फ़्रास्ट्रक्चर के बारे में नहीं पता है
इन संसाधनों के लिए, नीचे दिए गए दस्तावेज़ देखें:
# 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,]}
दूसरा चरण: बताए गए इन्फ़्रास्ट्रक्चर को बनाने के लिए, Terraform कमांड चलाना
संसाधनों का प्रावधान करने और अपने main.tf में बताई गई सेवाएं चालू करने के लिए
फ़ाइल अपलोड करने के लिए, उसी डायरेक्ट्री से इन कमांड को चलाएं जो आपकी main.tf फ़ाइल है.
इन निर्देशों के बारे में ज़्यादा जानने के लिए,
टेराफ़ॉर्म से जुड़े दस्तावेज़.
अगर आप पहली बार
डायरेक्ट्री के तौर पर, आपको कॉन्फ़िगरेशन डायरेक्ट्री शुरू करनी होगी और
Google टेराफ़ॉर्म कंपनी है. इसके लिए, नीचे दिया गया निर्देश देखें:
terraform init
फ़ाइल को रन करके, अपनी main.tf फ़ाइल में इन्फ़्रास्ट्रक्चर बनाएं
निम्न आदेश:
terraform apply
पुष्टि करें कि सब कुछ उम्मीद के मुताबिक प्रावधान या चालू किया गया था:
विकल्प 1:
निम्न आदेश:
terraform show
दूसरा विकल्प: यहां अपना Firebase प्रोजेक्ट देखें
Firebase कंसोल.
Teraform सहायता वाले Firebase के संसाधन
नीचे दिए गए Firebase और Google के संसाधनों में, टेरेस पर काम करने की सुविधा उपलब्ध है. और हम
हम ज़्यादा संसाधन जोड़ते हैं! इसलिए, अगर आपको वह संसाधन नहीं दिखता है
टेराफ़ॉर्म की मदद से मैनेज करना है, तो कुछ समय बाद फिर से देखें कि क्या वह उपलब्ध है या
इसके लिए अनुरोध करें
GitHub के रेपो में समस्या दर्ज करना.
google_identity_platform_config —
Google Cloud Identity Platform (GCIP) चालू करें (जो Firebase Authentication के लिए बैकएंड है)
और प्रोजेक्ट-लेवल पर पुष्टि करने की सेटिंग उपलब्ध कराएं
वह प्रोजेक्ट जिसमें Turaform GCIP और/या Firebase Authentication को चालू करेगा
ब्लेज़ कीमत के प्लान पर होना चाहिए (यानी कि प्रोजेक्ट में
Cloud Billing खाता जुड़ा हुआ है). इसे प्रोग्राम के हिसाब से, अपने-आप प्रोसेस होने की सुविधा के ज़रिए किया जा सकता है
सेट कर रही हूँ
billing_account
विशेषता google_project संसाधन में शामिल करें.
इस संसाधन से कई और कॉन्फ़िगरेशन भी चालू किए जा सकते हैं. जैसे, स्थानीय साइन-इन के तरीके,
जैसे कि पहचान छिपाकर ईमेल/पासवर्ड, और फ़ोन की पुष्टि करने की सुविधा.
और अनुमति वाले डोमेन को ब्लॉक करने वाले फ़ंक्शन और अनुमति वाले डोमेन.
टेराफ़ॉर्म के ज़रिए Firebase Realtime Database Security Rules को डिप्लॉय किया जा रहा है (इसका तरीका जानें
इन Rules को डिप्लॉय करें
दूसरे टूल का इस्तेमाल करना, जिनमें प्रोग्रामैटिक विकल्प भी शामिल हैं)
इस्तेमाल के सामान्य उदाहरणों के लिए, Tenraform कॉन्फ़िगरेशन फ़ाइलों का सैंपल
Firebase Authentication को इनसे सेट अप करें
जीसीआईपी
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट को Cloud Billing खाते (Bleze प्राइसिंग प्लान) से जोड़ता है
GCIP वाले Firebase Authentication के लिए ज़रूरी है),
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है,
GCIP के साथ Firebase Authentication सेट अप करता है,
और प्रोजेक्ट के साथ तीन अलग-अलग तरह के ऐप्लिकेशन रजिस्टर करता है.
ध्यान दें कि Tenraform के ज़रिए Firebase Authentication को सेट अप करने के लिए, जीसीआईपी को चालू करना ज़रूरी है.
# 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,]}
डिफ़ॉल्ट Firebase Realtime Database इंस्टेंस
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है,
प्रोजेक्ट के डिफ़ॉल्ट Realtime Database इंस्टेंस का प्रावधान करता है,
और प्रोजेक्ट के साथ तीन अलग-अलग तरह के ऐप्लिकेशन रजिस्टर करता है.
# 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,]}
एक से ज़्यादा डिवाइसों का प्रावधान करें
Firebase Realtime Database इंस्टेंस
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट को Cloud Billing खाते (Bleze प्राइसिंग प्लान) से जोड़ता है
एक से ज़्यादा Realtime Database इंस्टेंस के लिए ज़रूरी है),
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है,
कई Realtime Database इंस्टेंस का प्रावधान
(प्रोजेक्ट के डिफ़ॉल्ट Realtime Database इंस्टेंस के साथ),
और प्रोजेक्ट के साथ तीन अलग-अलग तरह के ऐप्लिकेशन रजिस्टर करता है.
# 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,]}
Cloud Firestore इंस्टेंस
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है,
प्रोजेक्ट के Cloud Firestore इंस्टेंस का प्रावधान करता है,
और प्रोजेक्ट के साथ तीन अलग-अलग तरह के ऐप्लिकेशन रजिस्टर करता है.
यह Cloud Firestore इंस्टेंस के लिए, Firebase Security Rules का भी प्रावधान करती है,
Cloud Firestore इंडेक्स बनाता है,
और सीड डेटा के साथ Cloud Firestore दस्तावेज़ जोड़ता है.
# 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,]}
यह Cloud Firestore Security Rules का नियमसेट है, जिसे स्थानीय फ़ाइल में होना चाहिए
firestore.rules नाम दिया गया है.
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है,
प्रोजेक्ट की डिफ़ॉल्ट Cloud Storage बकेट का प्रावधान करती है,
और प्रोजेक्ट के साथ तीन अलग-अलग तरह के ऐप्लिकेशन रजिस्टर करता है.
इसमें Cloud Storage बकेट के लिए, Firebase Security Rules का प्रावधान भी किया जाता है,
और बकेट में एक फ़ाइल अपलोड करता है.
# 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,]}
यह Cloud Storage Security Rules का नियमसेट है, जिसे स्थानीय फ़ाइल में होना चाहिए
storage.rules नाम दिया गया है.
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट को Cloud Billing खाते (Bleze प्राइसिंग प्लान) से जोड़ता है
एक से ज़्यादा बकेट के लिए ज़रूरी है),
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है,
कई Cloud Storage बकेट के प्रावधान
(प्रोजेक्ट के डिफ़ॉल्ट Cloud Storage बकेट के साथ),
और प्रोजेक्ट के साथ तीन अलग-अलग तरह के ऐप्लिकेशन रजिस्टर करता है.
इसमें Cloud Storage बकेट के लिए, Firebase Security Rules का प्रावधान भी किया जाता है.
और डिफ़ॉल्ट Cloud Storage बकेट में फ़ाइल अपलोड करता है.
# 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,]}
यह Cloud Storage Security Rules का नियमसेट है, जिसे स्थानीय फ़ाइल में होना चाहिए
storage.rules नाम दिया गया है.
Cloud Firestore इंस्टेंस और डिफ़ॉल्ट Cloud Storage बकेट
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है,
Cloud Firestore इंस्टेंस का प्रावधान करता है और
इसके बाद, डिफ़ॉल्ट Cloud Storage बकेट का प्रावधान किया जाता है.
यह Cloud Firestore इंस्टेंस और डिफ़ॉल्ट के लिए Firebase Security Rules का भी प्रावधान करता है
Cloud Storage बकेट.
# 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}
यह Cloud Firestore Security Rules का नियमसेट है, जिसे स्थानीय फ़ाइल में होना चाहिए
firestore.rules नाम दिया गया है.
किसी एपीआई रिसॉर्स को सुरक्षित रखना
Firebase App Check के साथ
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है और
Cloud Firestore के लिए Firebase App Check को लागू करता है और उसे सेट अप करता है
ताकि इसे सिर्फ़ आपके Android ऐप्लिकेशन से ऐक्सेस किया जा सके.
# 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]}
किसी विज्ञापन को
Firebase Extension का इंस्टेंस
यह कॉन्फ़िगरेशन, नया Google Cloud प्रोजेक्ट बनाता है,
प्रोजेक्ट के लिए Firebase सेवाओं को चालू करता है और
Firebase Extension का नया इंस्टेंस इंस्टॉल करता है
प्रोजेक्ट में शामिल हैं. अगर इंस्टेंस पहले से मौजूद है, तो
इसके पैरामीटर, कॉन्फ़िगरेशन में दी गई वैल्यू के हिसाब से अपडेट होते हैं.
# 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"}}}
समस्या का हल और अक्सर पूछे जाने वाले सवाल
क्या आपको
प्रोजेक्ट से जुड़े सभी अलग-अलग एट्रिब्यूट के बारे में ज़्यादा जानें. उदाहरण के लिए,
project और user_project_override)
"प्रोजेक्ट" के साथ काम करते समय, यह गाइड इन टेराफ़ॉर्म एट्रिब्यूट का इस्तेमाल करती है.
resource ब्लॉक में project
इसका सुझाव दिया जाता है: जब भी हो सके, हर एट्रिब्यूट में project एट्रिब्यूट शामिल करें
resource ब्लॉक
प्रोजेक्ट एट्रिब्यूट को शामिल करने पर, Tenraform इन्फ़्रास्ट्रक्चर बनाएगा
बताए गए प्रोजेक्ट में संसाधन ब्लॉक में तय किया गया हो. इस गाइड और
हमारी सैंपल कॉन्फ़िगरेशन फ़ाइलें इस तरीके का इस्तेमाल करती हैं.
इसके बारे में आधिकारिक Teraform दस्तावेज़ देखें
project.
provider ब्लॉक में user_project_override
ज़्यादातर संसाधनों के प्रावधान के लिए, आपको
user_project_override = true, जिसका मतलब है कि अपने हिसाब से कोटा की जांच करना
Firebase प्रोजेक्ट. हालांकि, अपने नए प्रोजेक्ट को सेट अप करें, ताकि यह
कोटा चेक करने के लिए, आपको पहले user_project_override = false का इस्तेमाल करना होगा.
आपको गड़बड़ी का यह मैसेज दिखता है:
generic::permission_denied: Firebase Tos Not Accepted.
पक्का करें कि gcloud CLI को चलाने के लिए, इस्तेमाल किया जा रहा उपयोगकर्ता खाता
कमांड ने Firebase की सेवा की शर्तें (Firebase ToS) स्वीकार कर ली हैं.
ऐसा करने के लिए, उस ब्राउज़र का इस्तेमाल करें जिसमें आपने उपयोगकर्ता खाते में साइन इन किया है और
में किसी मौजूदा Firebase प्रोजेक्ट को देखने का प्रयास कर रहा है
Firebase कंसोल. अगर आपको
मौजूदा Firebase प्रोजेक्ट है, तो उपयोगकर्ता खाते ने
Firebase की सेवा की शर्तें
अगर आपको कोई मौजूदा Firebase प्रोजेक्ट नहीं दिख रहा है, तो उपयोगकर्ता खाते से
शायद इसने Firebase की सेवा की शर्तों को स्वीकार नहीं किया है. इसे ठीक करने के लिए, नया
Firebase प्रोजेक्ट,
Firebase कंसोल खोलें और
प्रोजेक्ट बनाने के दौरान, Firebase की सेवा की शर्तें. इसे तुरंत मिटाया जा सकता है
प्रोजेक्ट सेटिंग के ज़रिए प्रोजेक्ट को एक्सपोर्ट करता है.
दौड़ने के बाद
terraform apply, आपको गड़बड़ी का यह मैसेज मिला है:
generic::permission_denied: IAM authority does not have the
permission.
कुछ मिनट इंतज़ार करें और terraform apply को फिर से चलाने की कोशिश करें.
कॉन्टेंट बनाने
संसाधन नहीं बनाया जा सका, लेकिन terraform apply इस्तेमाल करने पर
फिर से, ALREADY_EXISTS लिखा है.
ऐसा कई सिस्टम में, ब्रॉडकास्ट में देरी की वजह से हो सकता है. इस समस्या को हल करने की कोशिश करें
इसे चलाकर, Tenraform स्टेट में रिसॉर्स को इंपोर्ट करके समस्या
terraform import. इसके बाद, terraform apply को फिर से चलाकर देखें.
इनके साथ काम करते समय
Cloud Firestore, आपको गड़बड़ी का यह मैसेज मिला है: Error creating Index: googleapi:
Error 409;...Concurrent access -- try again
जैसा कि गड़बड़ी से पता चलता है, टेराफ़ॉर्म शायद एक से ज़्यादा इंडेक्स का प्रावधान करने की कोशिश कर रहा है
और/या एक ही समय में दस्तावेज़ बनाते समय कोई गड़बड़ी हुई.
terraform apply को फिर से चलाने की कोशिश करें.
आपको मिले हैं
यह गड़बड़ी:
"you may need to specify 'X-Goog-User-Project' HTTP header for quota and
billing purposes".
इस गड़बड़ी का मतलब है कि Tenraform को यह नहीं पता कि किस प्रोजेक्ट के कोटा की जांच करनी है
टीम में हुए हैं. समस्या हल करने के लिए, resource ब्लॉक में इनकी जांच करें:
पक्का करें कि आपने project एट्रिब्यूट के लिए वैल्यू तय की हो.
पक्का करें कि सेवा देने वाली कंपनी का इस्तेमाल, user_project_override = true के साथ किया जा रहा हो
(कोई उपनाम नहीं) देता है, जो Firebase सैंपल में google-beta है.
किसी विज्ञापन को
नया Google Cloud प्रोजेक्ट, आपको वह गड़बड़ी मिलती है जिसके लिए प्रोजेक्ट आईडी तय की गई है
नया प्रोजेक्ट पहले से मौजूद है.
प्रोजेक्ट आईडी पहले से मौजूद होने की ये वजहें हो सकती हैं:
उस आईडी से जुड़ा प्रोजेक्ट किसी और का है.
समस्या हल करने के लिए: कोई दूसरा प्रोजेक्ट आईडी चुनें.
इस आईडी से जुड़े प्रोजेक्ट को हाल ही में मिटा दिया गया था (डेटा को कुछ समय के लिए मिटाने की सुविधा के तहत मिटाया जा चुका है)
राज्य के हिसाब से).
समस्या हल करने के लिए: अगर आपको लगता है कि आईडी से जुड़ा प्रोजेक्ट
आपसे संपर्क करेंगे, तो इसका इस्तेमाल करके प्रोजेक्ट की स्थिति देखें
projects.get REST API.
उस आईडी से जुड़ा प्रोजेक्ट, मौजूदा उपयोगकर्ता के तहत सही तरीके से मौजूद होता है. ऐप्लिकेशन
गड़बड़ी की संभावित वजह यह हो सकती है कि पिछला terraform apply मिला हो
बाधित.
समस्या हल करने के लिए: इन निर्देशों को लागू करें: terraform import google_project.default PROJECT_ID
इसके बाद, terraform import google_firebase_project.default PROJECT_ID
टास्क कब शुरू होगा
Cloud Firestore और फिर Cloud Storage का प्रावधान करने की कोशिश की जा रही है
google_app_engine_application), तो आपको यह गड़बड़ी दिखती है:
Error: Error creating App Engine application: googleapi: Error 409:
Cannot create Firestore database resource <resource-name> since it
already exists at location <location-id>, alreadyExists.
App Engine ऐप्लिकेशन के लिए, Cloud Firestore इंस्टेंस की ज़रूरत होती है, लेकिन सिर्फ़ आप ऐसा कर सकते हैं
हर प्रोजेक्ट के लिए एक Cloud Firestore इंस्टेंस है. इसलिए, जैसा कि गड़बड़ी के मैसेज से पता चलता है,
अगर आपने प्रोजेक्ट के Cloud Firestore इंस्टेंस का प्रावधान
जगह, अगर आप Cloud Firestore का प्रावधान करने की कोशिश करते हैं, तो App Engine गड़बड़ी करेगा
किसी अन्य स्थान पर App Engine को लगता है कि आपको
"फिर से प्रावधान करना" Cloud Firestore इंस्टेंस पहले से मौजूद है.
इस गड़बड़ी को ठीक करने के लिए, Cloud Firestore और
App Engine ऐप्लिकेशन. अगर आपको Cloud Storage बकेट की ज़रूरत है,
यह Cloud Firestore से अलग है, तो आपके पास अतिरिक्त बकेट का प्रावधान करने का विकल्प होगा
(देखें.
एक से ज़्यादा Cloud Storage बनाने के लिए कॉन्फ़िगरेशन का सैंपल
बकेट).
टास्क कब शुरू होगा
Cloud Storage का प्रावधान करने की कोशिश की जा रही है (इसके ज़रिए
google_app_engine_application) और फिर Cloud Firestore चुकाने होंगे,
यह गड़बड़ी:
Error: Error creating Database: googleapi: Error 409: Database already
exists. Please use another database_id.
जब आप किसी प्रोजेक्ट के डिफ़ॉल्ट Cloud Storage बकेट का प्रावधान करते हैं (इसके ज़रिए
google_app_engine_application) और प्रोजेक्ट में अब तक
Cloud Firestore इंस्टेंस, फिर google_app_engine_application अपने-आप
प्रोजेक्ट के Cloud Firestore इंस्टेंस का प्रावधान करता है.
इसलिए, अगर आपके प्रोजेक्ट के Cloud Firestore इंस्टेंस का प्रावधान पहले ही किया जा चुका है,
google_firestore_database तब गड़बड़ी होगी, जब आप
Cloud Firestore इंस्टेंस.
प्रोजेक्ट के Cloud Firestore इंस्टेंस का प्रावधान होने के बाद, ये काम नहीं किए जा सकते
"फिर से प्रावधान करना" उसे या उसकी जगह को बदला जा सकता है. गड़बड़ी को रोकने के लिए,
अपनी कॉन्फ़िगरेशन फ़ाइल से google_firestore_database रिसॉर्स ब्लॉक को हटाएं.
हालांकि, हम अनुशंसा करते है कि आप Cloud Firestore
प्रोजेक्ट का डिफ़ॉल्ट Cloud Storage बकेट (इसकी वजह जानने के लिए नीचे दिया गया एक हिस्सा देखें).