সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
Firebase Terraform সমর্থন করতে শুরু করেছে। আপনি যদি এমন একটি দলে থাকেন যা নির্দিষ্ট সংস্থান এবং পরিষেবাগুলি সক্ষম করে Firebase প্রকল্পগুলিকে স্বয়ংক্রিয় এবং মানসম্মত করতে চায়, তাহলে Firebase-এর সাথে Terraform ব্যবহার করা আপনার জন্য উপযুক্ত হতে পারে।
Firebase-এর সাথে Terraform ব্যবহার করার জন্য মৌলিক কর্মপ্রবাহের মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:
একটি Terraform কনফিগারেশন ফাইল (একটি .tf ফাইল) তৈরি এবং কাস্টমাইজ করা যা আপনি যে পরিকাঠামোর ব্যবস্থা করতে চান তা নির্দিষ্ট করে (অর্থাৎ, আপনি যে সংস্থানগুলি সরবরাহ করতে চান এবং যে পরিষেবাগুলি আপনি সক্ষম করতে চান)।
gcloud CLI কমান্ডগুলি ব্যবহার করে যা Terraform-এর সাথে ইন্টারফেস করে .tf ফাইলে নির্দিষ্ট পরিকাঠামোর ব্যবস্থা করতে।
টেরাফর্ম ব্যবহার করে বিদ্যমান পরিকাঠামো মুছুন এবং সংশোধন করুন।
টেরাফর্ম ব্যবহার করে পণ্য-নির্দিষ্ট কনফিগারেশন এবং কাজগুলি পরিচালনা করুন, যেমন:
Firebase Authentication সাইন-ইন প্রদানকারী সক্রিয় করা হচ্ছে।
Cloud Storage বালতি বা ডাটাবেস দৃষ্টান্ত তৈরি করা এবং তাদের জন্য Firebase Security Rules স্থাপন করা।
আপনি এই সমস্ত কাজগুলি সম্পন্ন করতে স্ট্যান্ডার্ড Terraform কনফিগারেশন ফাইল এবং কমান্ড ব্যবহার করতে পারেন। এবং এটিতে আপনাকে সাহায্য করার জন্য, আমরা বেশ কয়েকটি সাধারণ ব্যবহারের ক্ষেত্রে নমুনা Terraform কনফিগারেশন ফাইল সরবরাহ করেছি।
Firebase এর সাথে Terraform ব্যবহার করার জন্য সাধারণ কর্মপ্রবাহ
পূর্বশর্ত
এই নির্দেশিকাটি Firebase-এর সাথে Terraform ব্যবহার করার একটি ভূমিকা, তাই এটি Terraform-এর সাথে মৌলিক দক্ষতা অনুমান করে। এই ওয়ার্কফ্লো শুরু করার আগে আপনি নিম্নলিখিত পূর্বশর্তগুলি সম্পূর্ণ করেছেন তা নিশ্চিত করুন৷
Terraform ইনস্টল করুন এবং তাদের অফিসিয়াল টিউটোরিয়াল ব্যবহার করে Terraform এর সাথে নিজেকে পরিচিত করুন।
ব্যবহারকারী অ্যাকাউন্ট এবং পরিষেবা অ্যাকাউন্টের জন্য প্রয়োজনীয়তা দেখুন
ব্যবহারকারীর অ্যাকাউন্ট ব্যবহার করলে, আপনি অবশ্যই Firebase পরিষেবার শর্তাবলী (Firebase ToS) স্বীকার করেছেন। আপনি Firebase ToS স্বীকার করেছেন যদি আপনি Firebase কনসোলে একটি Firebase প্রকল্প দেখতে পারেন
টেরাফর্মের জন্য নির্দিষ্ট কিছু পদক্ষেপ নেওয়ার জন্য (উদাহরণস্বরূপ, প্রকল্পগুলি তৈরি করুন), নিম্নলিখিতগুলি অবশ্যই সত্য হতে হবে:
ব্যবহারকারী বা পরিষেবা অ্যাকাউন্টের অবশ্যই সেই ক্রিয়াগুলির জন্য প্রযোজ্য IAM অ্যাক্সেস থাকতে হবে।
যদি ব্যবহারকারী বা পরিষেবার অ্যাকাউন্ট Google Cloud সংস্থার অংশ হয়, তাহলে সংস্থার নীতিগুলি অ্যাকাউন্টটিকে সেই পদক্ষেপগুলি নেওয়ার অনুমতি দিতে হবে৷
ধাপ 1: একটি Terraform কনফিগারেশন ফাইল তৈরি এবং কাস্টমাইজ করুন
একটি Terraform কনফিগারেশন ফাইলের দুটি প্রধান বিভাগ প্রয়োজন (যা নীচে বিশদে বর্ণনা করা হয়েছে):
Firebase পণ্য বা পরিষেবাগুলি যেই জড়িত থাকুক না কেন একটি provider সেটআপ প্রয়োজন৷
আপনার স্থানীয় ডিরেক্টরিতে একটি Terraform কনফিগার ফাইল (যেমন main.tf ফাইল) তৈরি করুন।
এই নির্দেশিকায়, আপনি এই কনফিগারেশন ফাইলটি উভয় provider সেটআপ এবং সমস্ত অবকাঠামো নির্দিষ্ট করতে ব্যবহার করবেন যা আপনি Terraform তৈরি করতে চান। নোট করুন, যদিও, আপনার কাছে কীভাবে প্রদানকারী সেটআপ অন্তর্ভুক্ত করবেন তার বিকল্প রয়েছে।
কীভাবে provider সেটআপ অন্তর্ভুক্ত করবেন তার বিকল্পগুলি দেখুন৷
আপনার Terraform কনফিগারেশনের বাকি অংশে একটি provider সেটআপ কীভাবে অন্তর্ভুক্ত করবেন তার জন্য আপনার কাছে নিম্নলিখিত বিকল্প রয়েছে:
বিকল্প 1: এটিকে একটি একক Terraform .tf কনফিগারেশন ফাইলের শীর্ষে অন্তর্ভুক্ত করুন (যেমন এই নির্দেশিকায় দেখানো হয়েছে)।
এই বিকল্পটি ব্যবহার করুন যদি আপনি সবেমাত্র Terraform দিয়ে শুরু করছেন বা Firebase-এর সাথে Terraform ব্যবহার করে দেখুন।
বিকল্প 2: এটিকে একটি পৃথক .tf ফাইলে অন্তর্ভুক্ত করুন (যেমন একটি provider.tf ফাইল), .tf ফাইলটি ছাড়াও যেখানে আপনি তৈরি করার জন্য পরিকাঠামো নির্দিষ্ট করেছেন (যেমন একটি main.tf ফাইল)।
এই বিকল্পটি ব্যবহার করুন যদি আপনি একটি বড় দলের অংশ হন যার সেটআপকে মানসম্মত করতে হবে।
Terraform কমান্ড চালানোর সময়, provider.tf ফাইল এবং main.tf ফাইল উভয়ই একই ডিরেক্টরিতে থাকতে হবে।
main.tf ফাইলের শীর্ষে নিম্নলিখিত provider সেটআপটি অন্তর্ভুক্ত করুন।
আপনাকে অবশ্যই google-beta প্রদানকারী ব্যবহার করতে হবে কারণ এটি Terraform এর সাথে Firebase ব্যবহার করার একটি বিটা রিলিজ। উত্পাদনে ব্যবহার করার সময় সতর্কতা অবলম্বন করুন।
# Terraform configuration to set up providers by version.terraform{required_providers{google-beta={source="hashicorp/google-beta"version="~> 6.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}
আপনার কনফিগার ফাইলটি সম্পূর্ণ করতে পরবর্তী বিভাগে চালিয়ে যান এবং কোন পরিকাঠামো তৈরি করতে হবে তা নির্দিষ্ট করুন।
resource ব্লক ব্যবহার করে কোন পরিকাঠামো তৈরি করতে হবে তা উল্লেখ করুন
আপনার Terraform কনফিগারেশন ফাইলে (এই নির্দেশিকাটির জন্য, আপনার main.tf ফাইল), আপনাকে টেরাফর্ম তৈরি করতে চান এমন সমস্ত অবকাঠামো নির্দিষ্ট করতে হবে (অর্থাৎ আপনি যে সমস্ত সংস্থানগুলি সরবরাহ করতে চান এবং আপনি যে সমস্ত পরিষেবা সক্ষম করতে চান)। এই নির্দেশিকাটিতে, সমস্ত Firebase সংস্থানগুলির একটি সম্পূর্ণ তালিকা খুঁজুন যা Terraform সমর্থন করে ।
আপনার main.tf ফাইল খুলুন।
provider সেটআপের অধীনে, resource ব্লকের নিম্নলিখিত কনফিগারেশন অন্তর্ভুক্ত করুন।
এই মৌলিক উদাহরণটি একটি নতুন 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,]}
ধাপ 2: নির্দিষ্ট পরিকাঠামো তৈরি করতে Terraform কমান্ড চালান
সম্পদের ব্যবস্থা করতে এবং আপনার main.tf ফাইলে নির্দিষ্ট করা পরিষেবাগুলি সক্রিয় করতে, আপনার main.tf ফাইলের মতো একই ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডগুলি চালান। এই কমান্ড সম্পর্কে বিস্তারিত তথ্যের জন্য, Terraform ডকুমেন্টেশন দেখুন।
যদি এই প্রথমবার হয় যে আপনি ডিরেক্টরিতে Terraform কমান্ডগুলি চালাচ্ছেন, তাহলে আপনাকে কনফিগারেশন ডিরেক্টরি শুরু করতে হবে এবং Google Terraform প্রদানকারী ইনস্টল করতে হবে। নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে এটি করুন:
terraform init
নিম্নলিখিত কমান্ডটি চালিয়ে আপনার main.tf ফাইলে নির্দিষ্ট পরিকাঠামো তৈরি করুন:
terraform apply
নিশ্চিত করুন যে সবকিছু প্রত্যাশিত হিসাবে প্রবিধান বা সক্ষম করা হয়েছে:
নিম্নলিখিত ফায়ারবেস এবং Google সংস্থানগুলিতে Terraform সমর্থন রয়েছে৷ এবং আমরা সব সময় আরো সম্পদ যোগ করছি! সুতরাং আপনি যদি Terraform এর সাথে যে সংস্থানটি পরিচালনা করতে চান তা দেখতে না পান, তাহলে এটি উপলব্ধ কিনা তা দেখতে শীঘ্রই ফিরে দেখুন বা GitHub রেপোতে একটি সমস্যা ফাইল করে এটির অনুরোধ করুন।
ফায়ারবেস প্রকল্প এবং অ্যাপ পরিচালনা
google_firebase_project — একটি বিদ্যমান Google Cloud প্রকল্পে Firebase পরিষেবাগুলি সক্ষম করুন৷
google_identity_platform_config — Google Cloud Identity Platform (GCIP) সক্ষম করুন (যা Firebase Authentication জন্য ব্যাকএন্ড) এবং প্রকল্প-স্তরের প্রমাণীকরণ সেটিংস প্রদান করে
যে প্রজেক্টে Terraform GCIP এবং/অথবা Firebase Authentication সক্ষম করবে তা অবশ্যই Blaze প্রাইসিং প্ল্যানে থাকতে হবে (অর্থাৎ, প্রজেক্টের একটি সংশ্লিষ্ট Cloud Billing অ্যাকাউন্ট থাকতে হবে)। আপনি google_project রিসোর্সে billing_account অ্যাট্রিবিউট সেট করে প্রোগ্রাম্যাটিকভাবে এটি করতে পারেন।
এই সংস্থানটি আরও কনফিগারেশন সক্ষম করে, যেমন স্থানীয় সাইন-ইন পদ্ধতি, যেমন বেনামী, ইমেল/পাসওয়ার্ড এবং ফোন প্রমাণীকরণ, সেইসাথে ব্লকিং ফাংশন এবং অনুমোদিত ডোমেন।
টেরাফর্মের মাধ্যমে Firebase Realtime Database Security Rules স্থাপন করা (প্রোগ্রাম্যাটিক বিকল্পগুলি সহ অন্যান্য টুলিং ব্যবহার করে এই Rules কীভাবে স্থাপন করতে হয় তা শিখুন)
সাধারণ ব্যবহারের ক্ষেত্রে নমুনা Terraform কনফিগারেশন ফাইল
GCIP এর সাথে Firebase Authentication সেট আপ করুন
এই কনফিগারেশনটি একটি নতুন Google Cloud প্রকল্প তৈরি করে, একটি Cloud Billing অ্যাকাউন্টের সাথে প্রকল্পটিকে সংযুক্ত করে (GCIP-এর সাথে Firebase Authentication জন্য Blaze মূল্য পরিকল্পনা প্রয়োজন), প্রকল্পের জন্য Firebase পরিষেবাগুলি সক্ষম করে, GCIP-এর সাথে Firebase Authentication সেট আপ করে এবং প্রকল্পের সাথে তিনটি ভিন্ন ধরনের অ্যাপ নিবন্ধন করে৷
মনে রাখবেন যে টেরাফর্মের মাধ্যমে Firebase Authentication সেট আপ করতে GCIP সক্ষম করা প্রয়োজন।
# 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"}# 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_firebase_project.auth.project # 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",]}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""auth"{provider=google-betaproject=google_firebase_project.auth.projectdisplay_name="My Android app"package_name="android.package.name"}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""auth"{provider=google-betaproject=google_firebase_project.auth.projectdisplay_name="My Apple app"bundle_id="apple.app.12345"}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""auth"{provider=google-betaproject=google_firebase_project.auth.projectdisplay_name="My Web app"}
একটি Firebase Data Connect পরিষেবা প্রদান করুন
এই কনফিগারেশনটি একটি নতুন Google Cloud প্রকল্প তৈরি করে, প্রকল্পের জন্য Firebase পরিষেবাগুলি সক্ষম করে এবং একটি Data Connect পরিষেবার ব্যবস্থা করে৷
# Creates a new Google Cloud project.resource"google_project""dataconnect"{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 Data Connect).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""services"{provider=google-beta.no_user_project_overrideproject=google_project.dataconnect.project_idfor_each=toset(["serviceusage.googleapis.com","cloudresourcemanager.googleapis.com","firebasedataconnect.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""dataconnect"{provider=google-betaproject=google_project.dataconnect.project_iddepends_on=[google_project_service.services]}# Create a Firebase Data Connect serviceresource"google_firebase_data_connect_service""dataconnect-default"{project=google_firebase_project.dataconnect.projectlocation="name-of-region-for-service"service_id="${google_firebase_project.dataconnect.project}-default-fdc"deletion_policy="DEFAULT"}
ডিফল্ট Firebase Realtime Database উদাহরণ প্রদান করুন
এই কনফিগারেশনটি একটি নতুন Google Cloud প্রকল্প তৈরি করে, প্রকল্পের জন্য ফায়ারবেস পরিষেবাগুলিকে সক্ষম করে, প্রকল্পের ডিফল্ট 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"}# 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_iddepends_on=[google_project_service.rtdb]}# Provisions the default Realtime Database default instance.resource"google_firebase_database_instance""database"{provider=google-betaproject=google_firebase_project.rtdb.project # See available locations: https://firebase.google.com/docs/database/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"}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""rtdb"{provider=google-betaproject=google_firebase_project.rtdb.projectdisplay_name="My Android app"package_name="android.package.name"}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""rtdb"{provider=google-betaproject=google_firebase_project.rtdb.projectdisplay_name="My Apple app"bundle_id="apple.app.12345"}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""rtdb"{provider=google-betaproject=google_firebase_project.rtdb.projectdisplay_name="My Web app"}
একাধিক Firebase Realtime Database উদাহরণ প্রদান করুন
এই কনফিগারেশনটি একটি নতুন Google Cloud প্রকল্প তৈরি করে, একটি Cloud Billing অ্যাকাউন্টের সাথে প্রকল্পটিকে সংযুক্ত করে (একাধিক Realtime Database দৃষ্টান্তের জন্য ব্লেজ মূল্য পরিকল্পনা প্রয়োজন), প্রকল্পের জন্য ফায়ারবেস পরিষেবাগুলি সক্ষম করে, একাধিক 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"}# 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_iddepends_on=[google_project_service.rtdb-multi]}# Provisions the default Realtime Database default instance.resource"google_firebase_database_instance""database-default"{provider=google-betaproject=google_firebase_project.rtdb-multi.project # See available locations: https://firebase.google.com/docs/database/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"}# Provisions an additional Realtime Database instance.resource"google_firebase_database_instance""database-additional"{provider=google-betaproject=google_firebase_project.rtdb-multi.project # 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"}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""rtdb-multi"{provider=google-betaproject=google_firebase_project.rtdb-multi.projectdisplay_name="My Android app"package_name="android.package.name"}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""rtdb-multi"{provider=google-betaproject=google_firebase_project.rtdb-multi.projectdisplay_name="My Apple app"bundle_id="apple.app.12345"}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""rtdb-multi"{provider=google-betaproject=google_firebase_project.rtdb-multi.projectdisplay_name="My Web app"}
ডিফল্ট Cloud Firestore উদাহরণ প্রদান করুন
এই কনফিগারেশনটি একটি নতুন Google Cloud প্রকল্প তৈরি করে, প্রকল্পের জন্য ফায়ারবেস পরিষেবাগুলি সক্ষম করে, প্রকল্পের ডিফল্ট 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"}# 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_iddepends_on=[google_project_service.firestore]}# Provisions the Firestore database instance.resource"google_firestore_database""firestore"{provider=google-betaproject=google_firebase_project.firestore.projectname="(default)" # See available locations: https://firebase.google.com/docs/firestore/locationslocation_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"}# Creates a ruleset of Firestore Security Rules from a local file.resource"google_firebaserules_ruleset""firestore"{provider=google-betaproject=google_firestore_database.firestore.projectsource{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")}}}# 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_firestore_database.firestore.project}# Adds a new Firestore index.resource"google_firestore_index""indexes"{provider=google-betaproject=google_firestore_database.firestore.projectcollection="quiz"query_scope="COLLECTION"fields{field_path="question"order="ASCENDING"}fields{field_path="answer"order="ASCENDING"}}# 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_firestore_database.firestore.projectcollection="quiz"document_id="question-1"fields="{\"question\":{\"stringValue\":\"Favorite Database\"},\"answer\":{\"stringValue\":\"Firestore\"}}"}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""firestore"{provider=google-betaproject=google_firebase_project.firestore.projectdisplay_name="My Android app"package_name="android.package.name"}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""firestore"{provider=google-betaproject=google_firebase_project.firestore.projectdisplay_name="My Apple app"bundle_id="apple.app.12345"}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""firestore"{provider=google-betaproject=google_firebase_project.firestore.projectdisplay_name="My Web app"}
এটি হল Cloud Firestore Security Rules নিয়ম যা firestore.rules নামে একটি স্থানীয় ফাইলে থাকা উচিত।
এই কনফিগারেশনটি একটি নতুন Google Cloud প্রকল্প তৈরি করে, একটি Cloud Billing অ্যাকাউন্টের সাথে প্রকল্পটিকে সংযুক্ত করে (অতিরিক্ত বালতিগুলির জন্য ব্লেজ মূল্য পরিকল্পনা প্রয়োজন), প্রকল্পের জন্য ফায়ারবেস পরিষেবাগুলি সক্ষম করে, অতিরিক্ত, নন-ডিফল্ট 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"}# 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_iddepends_on=[google_project_service.storage-multi]}# Provisions a Cloud Storage bucket.resource"google_storage_bucket""bucket-1"{provider=google-betaproject=google_firebase_project.storage-multi.projectname="name-of-storage-bucket" # See available locations: https://cloud.google.com/storage/docs/locations#available-locationslocation="name-of-region-for-bucket"}# Provisions an additional Cloud Storage bucket.resource"google_storage_bucket""bucket-2"{provider=google-betaproject=google_firebase_project.storage-multi.projectname="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 existing Storage bucket.location="name-of-region-for-additional-bucket"}# Makes the first Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.resource"google_firebase_storage_bucket""bucket-1"{provider=google-betaproject=google_firebase_project.storage-multi.projectbucket_id=google_storage_bucket.bucket-1.name}# Makes the additional Storage bucket accessible for Firebase SDKs, authentication, and Firebase Security Rules.resource"google_firebase_storage_bucket""bucket-2"{provider=google-betaproject=google_firebase_project.storage-multi.projectbucket_id=google_storage_bucket.bucket-2.name}# Creates a ruleset of Firebase Security Rules from a local file.resource"google_firebaserules_ruleset""storage-multi"{provider=google-betaproject=google_firebase_project.storage-multi.projectsource{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")}}}# Releases the ruleset to the first Storage bucket.resource"google_firebaserules_release""bucket-1"{provider=google-betaname="firebase.storage/${google_storage_bucket.bucket-1.name}"ruleset_name="projects/${google_project.storage-multi.project_id}/rulesets/${google_firebaserules_ruleset.storage-multi.name}"project=google_firebase_project.storage-multi.project}# Releases the ruleset to the additional Storage bucket.resource"google_firebaserules_release""bucket-2"{provider=google-betaname="firebase.storage/${google_storage_bucket.bucket-2.name}"ruleset_name="projects/${google_project.storage-multi.project_id}/rulesets/${google_firebaserules_ruleset.storage-multi.name}"project=google_firebase_project.storage-multi.project}# Uploads a new file to the first 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_storage_bucket.bucket-1.name}# Creates a Firebase Android App in the new project created above.resource"google_firebase_android_app""storage-multi"{provider=google-betaproject=google_firebase_project.storage-multi.projectdisplay_name="My Android app"package_name="android.package.name"}# Creates a Firebase Apple-platforms App in the new project created above.resource"google_firebase_apple_app""storage-multi"{provider=google-betaproject=google_firebase_project.storage-multi.projectdisplay_name="My Apple app"bundle_id="apple.app.12345"}# Creates a Firebase Web App in the new project created above.resource"google_firebase_web_app""storage-multi"{provider=google-betaproject=google_firebase_project.storage-multi.projectdisplay_name="My Web app"}
এটি হল Cloud Storage Security Rules রুলসেট যা storage.rules নামে একটি স্থানীয় ফাইলে থাকা উচিত।
Firebase App Check মাধ্যমে একটি API সংস্থান সুরক্ষিত করুন
এই কনফিগারেশনটি একটি নতুন 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"}# 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"}# 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]}# 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=[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"}# 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_firebase_project.extensions.projectinstance_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"}}}
Firebase-এ Vertex AI সক্ষম এবং সুরক্ষিত করুন
এই কনফিগারেশনটি একটি নতুন Google Cloud প্রজেক্ট তৈরি করে, Firebase-এ Vertex AI সহ প্রকল্পের জন্য Firebase পরিষেবাগুলিকে সক্ষম করে এবং Firebase-এ Vertex AI- এর জন্য Firebase App Check এর এনফোর্সমেন্ট সেট আপ ও সক্ষম করে যাতে এটি শুধুমাত্র আপনার অ্যাপ থেকে অ্যাক্সেস করা যায়।
# Creates a new Google Cloud project.resource"google_project""vertex"{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 Vertex AI in Firebase).billing_account="000000-000000-000000"}# Enables required APIs.resource"google_project_service""services"{provider=google-beta.no_user_project_overrideproject=google_project.vertex.project_idfor_each=toset(["cloudresourcemanager.googleapis.com","firebase.googleapis.com","serviceusage.googleapis.com", # Required APIs for Vertex AI in Firebase"aiplatform.googleapis.com","firebasevertexai.googleapis.com", # App Check is recommended to protect Vertex AI in Firebase from abuse"firebaseappcheck.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""vertex"{provider=google-betaproject=google_project.vertex.project_iddepends_on=[google_project_service.services]}# Creates a Firebase Web App in the new project created earlier.resource"google_firebase_web_app""app"{provider=google-betaproject=google_firebase_project.vertex.projectdisplay_name="My Web App"}# Creates a Firebase Android App in the new project created earlier.resource"google_firebase_android_app""app"{provider=google-betaproject=google_firebase_project.vertex.projectdisplay_name="My Android App"package_name="package.name.playintegrity"sha256_hashes=[ # TODO: insert your Android app's SHA256 certificate]}# Creates a Firebase Apple App in the new project created earlier.resource"google_firebase_apple_app""app"{provider=google-betaproject=google_firebase_project.vertex.projectdisplay_name="My Apple App"bundle_id="bundle.id"team_id="1234567890"}### Protects Vertex AI in Firebase with App Check.# Turns on enforcement for Vertex AI in Firebaseresource"google_firebase_app_check_service_config""vertex"{provider=google-betaproject=google_firebase_project.vertex.projectservice_id="firebaseml.googleapis.com"enforcement_mode="ENFORCED"}# Enables the reCAPTCHA Enterprise APIresource"google_project_service""recaptcha_enterprise"{provider=google-betaproject=google_firebase_project.vertex.projectservice="recaptchaenterprise.googleapis.com" # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Enables the Play Integrity APIresource"google_project_service""play_integrity"{provider=google-betaproject=google_firebase_project.vertex.projectservice="playintegrity.googleapis.com" # Don't disable the service if the resource block is removed by accident.disable_on_destroy=false}# Allows the web app to use reCAPTCHA Enterprise with App Checkresource"google_firebase_app_check_recaptcha_enterprise_config""appcheck"{provider=google-betaproject=google_firebase_project.vertex.projectapp_id=google_firebase_web_app.app.app_idsite_key="your site key"token_ttl="7200s" # Optionaldepends_on=[google_project_service.recaptcha_enterprise]}# Registers the Android app with the Play Integrity providerresource"google_firebase_app_check_play_integrity_config""appcheck"{provider=google-betaproject=google_firebase_project.vertex.projectapp_id=google_firebase_android_app.app.app_idtoken_ttl="7200s" # Optionallifecycle{precondition{condition=length(google_firebase_android_app.app.sha256_hashes)>0error_message="Provide a SHA-256 certificate on the Android App to use App Check"}}depends_on=[google_project_service.play_integrity]}# Registers the Apple app with the AppAttest providerresource"google_firebase_app_check_app_attest_config""appcheck"{provider=google-betaproject=google_firebase_project.vertex.projectapp_id=google_firebase_apple_app.app.app_idtoken_ttl="7200s" # Optionallifecycle{precondition{condition=google_firebase_apple_app.app.team_id!=""error_message="Provide a Team ID on the Apple App to use App Check"}}}
সমস্যা সমাধান এবং FAQ
আপনি সমস্ত বিভিন্ন প্রকল্প-সম্পর্কিত বৈশিষ্ট্য (যেমন project এবং user_project_override ) সম্পর্কে আরও জানতে চান
এই নির্দেশিকাটি "প্রকল্প" এর সাথে কাজ করার সময় নিম্নলিখিত Terraform বৈশিষ্ট্যগুলি ব্যবহার করে।
একটি resource ব্লকের মধ্যে project
প্রস্তাবিত: যখনই সম্ভব, প্রতিটি resource ব্লকের মধ্যে project বৈশিষ্ট্য অন্তর্ভুক্ত করুন
একটি প্রকল্প বৈশিষ্ট্য অন্তর্ভুক্ত করে, Terraform নির্দিষ্ট প্রকল্পের মধ্যে রিসোর্স ব্লকে নির্দিষ্ট পরিকাঠামো তৈরি করবে। এই গাইড এবং আমাদের নমুনা কনফিগার ফাইলগুলি এই অনুশীলনটি ব্যবহার করে।
project সম্পর্কে অফিসিয়াল Terraform ডকুমেন্টেশন দেখুন.
provider ব্লকের মধ্যে user_project_override
বেশিরভাগ সম্পদের ব্যবস্থা করার জন্য, আপনাকে user_project_override = true ব্যবহার করতে হবে, যার অর্থ আপনার নিজের ফায়ারবেস প্রকল্পের বিপরীতে কোটা পরীক্ষা করা। যাইহোক, আপনার নতুন প্রকল্প সেট আপ করতে যাতে এটি কোটা চেক গ্রহণ করতে পারে, আপনাকে প্রথমে user_project_override = false ব্যবহার করতে হবে।
আপনি এই ত্রুটিটি পেয়েছেন: generic::permission_denied: Firebase Tos Not Accepted .
নিশ্চিত করুন যে আপনি যে ব্যবহারকারীর অ্যাকাউন্টটি gcloud CLI কমান্ডগুলি চালানোর জন্য ব্যবহার করছেন সেটি Firebase পরিষেবার শর্তাবলী (Firebase ToS) স্বীকার করেছে৷
আপনি ব্যবহারকারীর অ্যাকাউন্টে সাইন ইন করা একটি ব্রাউজার ব্যবহার করে এবং Firebase কনসোলে একটি বিদ্যমান Firebase প্রকল্প দেখার চেষ্টা করে এই পরীক্ষাটি করতে পারেন। আপনি যদি একটি বিদ্যমান Firebase প্রকল্প দেখতে পারেন, তাহলে ব্যবহারকারীর অ্যাকাউন্ট Firebase ToS স্বীকার করেছে।
আপনি যদি কোনো বিদ্যমান ফায়ারবেস প্রজেক্ট দেখতে না পান, তাহলে ব্যবহারকারীর অ্যাকাউন্ট সম্ভবত Firebase ToS স্বীকার করেনি। এটি ঠিক করতে, Firebase কনসোলের মাধ্যমে একটি নতুন Firebase প্রকল্প তৈরি করুন এবং প্রকল্প তৈরির অংশ হিসাবে Firebase ToS গ্রহণ করুন৷ আপনি কনসোলে প্রজেক্ট সেটিংসের মাধ্যমে অবিলম্বে এই প্রকল্পটি মুছে ফেলতে পারেন।
terraform apply করার পরে, আপনি এই ত্রুটিটি পাবেন: generic::permission_denied: IAM authority does not have the permission ।
কয়েক মিনিট অপেক্ষা করুন, এবং তারপর আবার terraform apply করার চেষ্টা করুন।
একটি সংস্থান তৈরি করা ব্যর্থ হয়েছে, কিন্তু আপনি যখন terraform apply , এটি ALREADY_EXISTS বলে।
এটি বিভিন্ন সিস্টেমে প্রচার বিলম্বের কারণে হতে পারে। terraform import চালানোর মাধ্যমে টেরাফর্ম স্টেটে সম্পদ আমদানি করে এই সমস্যাটি সমাধান করার চেষ্টা করুন। তারপর আবার terraform apply চালানোর চেষ্টা করুন।
Cloud Firestore সাথে কাজ করার সময়, আপনি এই ত্রুটিটি পান: Error creating Index: googleapi: Error 409;...Concurrent access -- try again
ত্রুটির পরামর্শ অনুসারে, Terraform একাধিক সূচকের ব্যবস্থা করার চেষ্টা করতে পারে এবং/অথবা একই সময়ে একটি নথি তৈরি করতে পারে এবং একটি সমবর্তী ত্রুটির মধ্যে পড়ে। terraform apply ।
আপনি এই ত্রুটিটি পেয়েছেন: "you may need to specify 'X-Goog-User-Project' HTTP header for quota and billing purposes" ।
এই ত্রুটির অর্থ হল যে কোন প্রকল্পের বিপরীতে কোটা পরীক্ষা করতে হবে তা Terraform জানে না। সমস্যা সমাধানের জন্য, 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 Storage বাকেটের আগে কেন আপনাকে ডিফল্ট Cloud Firestore ইনস্ট্যান্সের ব্যবস্থা করতে হবে?
আপনি যদি আপনার ডিফল্ট ক্লাউড Cloud Firestore দৃষ্টান্তের ব্যবস্থা করার চেষ্টা করার আগে আপনার ডিফল্ট ক্লাউড Cloud Storage বালতি ( google_app_engine_application এর মাধ্যমে) ব্যবস্থা করে থাকেন, তাহলে আপনি দেখতে পাবেন যে আপনার ডিফল্ট Cloud Firestore দৃষ্টান্ত ইতিমধ্যেই বিধান করা হয়েছে৷ মনে রাখবেন যে প্রভিশন করা ডাটাবেস ইন্সট্যান্স ডেটাস্টোর মোডে আছে, যার মানে এটি Firebase SDK, প্রমাণীকরণ, বা Firebase Security Rules অ্যাক্সেসযোগ্য নয় । আপনি যদি এই ফায়ারবেস পরিষেবাগুলির সাথে Cloud Firestore ব্যবহার করতে চান, তাহলে আপনাকে ডাটাবেসটি খালি করতে হবে এবং তারপরে Google Cloud কনসোলে এর ডাটাবেসের প্রকার পরিবর্তন করতে হবে।
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 দৃষ্টান্তের ব্যবস্থা করা হলে, আপনি এটিকে "পুনরায় বিধান" করতে বা এর অবস্থান পরিবর্তন করতে পারবেন না। মনে রাখবেন যে প্রভিশন করা ডাটাবেস ইন্সট্যান্স ডেটাস্টোর মোডে আছে, যার মানে এটি Firebase SDK, প্রমাণীকরণ, বা Firebase Security Rules অ্যাক্সেসযোগ্য নয় । আপনি যদি এই ফায়ারবেস পরিষেবাগুলির সাথে Cloud Firestore ব্যবহার করতে চান, তাহলে আপনাকে ডাটাবেসটি খালি করতে হবে এবং তারপরে Google Cloud কনসোলে এর ডাটাবেসের প্রকার পরিবর্তন করতে হবে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-04-15 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[]]