প্রায়শই আপনার ফাংশনগুলির জন্য অতিরিক্ত কনফিগারেশনের প্রয়োজন হবে, যেমন তৃতীয় পক্ষের API কী বা টিউনযোগ্য সেটিংস। ক্লাউড ফাংশনের জন্য Firebase SDK পরিবেশ কনফিগারেশনের জন্য দুটি পন্থা অফার করে যাতে আপনার প্রকল্পের জন্য এই ধরনের ডেটা সংরক্ষণ এবং পুনরুদ্ধার করা সহজ হয়:
- প্যারামিটারাইজড কনফিগারেশন। এটি পরামিতিগুলির সাথে দৃঢ়ভাবে টাইপ করা পরিবেশ কনফিগারেশন প্রদান করে যা স্থাপনের সময় যাচাই করা হয়, যা ত্রুটি প্রতিরোধ করে এবং ডিবাগিংকে সহজ করে।
- পরিবেশ পরিবর্তনশীল. এই পদ্ধতির সাহায্যে, আপনি ম্যানুয়ালি পরিবেশ ভেরিয়েবল লোড করার জন্য একটি dotenv ফাইল তৈরি করেন।
বেশিরভাগ ব্যবহারের ক্ষেত্রে, প্যারামিটারাইজড কনফিগারেশন সুপারিশ করা হয়। এই পদ্ধতিটি রানটাইম এবং ডিপ্লোয় টাইম উভয় সময়েই কনফিগারেশন মান উপলব্ধ করে এবং সমস্ত প্যারামিটারের একটি বৈধ মান না থাকলে স্থাপনা ব্লক করা হয়। বিপরীতভাবে, পরিবেশের ভেরিয়েবলের সাথে কনফিগারেশন স্থাপনের সময় উপলব্ধ নয়।
প্যারামিটারাইজড কনফিগারেশন
ফায়ারবেসের জন্য ক্লাউড ফাংশন আপনার কোডবেসের ভিতরে ঘোষণামূলকভাবে কনফিগারেশন প্যারামিটারগুলি সংজ্ঞায়িত করার জন্য একটি ইন্টারফেস প্রদান করে। এই পরামিতিগুলির মান ফাংশন স্থাপনের সময়, স্থাপনা এবং রানটাইম বিকল্পগুলি সেট করার সময় এবং কার্যকর করার সময় উভয়ই উপলব্ধ। এর মানে হল যে সমস্ত প্যারামিটারের একটি বৈধ মান না থাকলে CLI স্থাপনা ব্লক করবে।
আপনার কোডে পরামিতি সংজ্ঞায়িত করতে, এই মডেলটি অনুসরণ করুন:
const { onRequest } = require('firebase-functions/v2/https');
const { defineInt, defineString } = require('firebase-functions/params');
// Define some parameters
const minInstancesConfig = defineInt('HELLO_WORLD_MININSTANCES');
const welcomeMessage = defineString('WELCOME_MESSAGE');
// To use configured parameters inside the config for a function, provide them
// directly. To use them at runtime, call .value() on them.
export const helloworld = onRequest(
{ minInstances: minInstancesConfig },
(req, res) => {
res.send(`${welcomeMessage.value()}! I am a function.`);
}
);
প্যারামিটারাইজড কনফিগারেশন ভেরিয়েবল সহ একটি ফাংশন স্থাপন করার সময়, Firebase CLI প্রথমে স্থানীয় .env ফাইল থেকে তাদের মান লোড করার চেষ্টা করে। যদি সেগুলি সেই ফাইলগুলিতে উপস্থিত না থাকে এবং কোনও default
সেট না থাকে, তাহলে CLI ডিপ্লোয়মেন্টের সময় মানগুলির জন্য অনুরোধ করবে এবং তারপর স্বয়ংক্রিয়ভাবে তাদের মানগুলি আপনার functions/
ডিরেক্টরিতে .env.<project_ID>
নামে একটি .env
ফাইলে সংরক্ষণ করবে:
$ firebase deploy
i functions: preparing codebase default for deployment
? Enter a string value for ENVIRONMENT: prod
i functions: Writing new parameter values to disk: .env.projectId
…
$ firebase deploy
i functions: Loaded environment variables from .env.projectId
আপনার ডেভেলপমেন্ট ওয়ার্কফ্লো উপর নির্ভর করে, এটি তৈরি করা .env.<project_ID>
ফাইলটিকে সংস্করণ নিয়ন্ত্রণে যোগ করা উপযোগী হতে পারে।
CLI আচরণ কনফিগার করুন
পরামিতিগুলিকে একটি Options
বস্তুর সাথে কনফিগার করা যেতে পারে যা নিয়ন্ত্রণ করে কিভাবে CLI মানগুলির জন্য প্রম্পট করবে। নিম্নলিখিত উদাহরণটি একটি ফোন নম্বরের বিন্যাস যাচাই করার বিকল্পগুলি সেট করে, একটি সাধারণ নির্বাচনের বিকল্প প্রদান করতে এবং Firebase প্রকল্প থেকে স্বয়ংক্রিয়ভাবে একটি নির্বাচনের বিকল্প তৈরি করে:
const { defineString } = require('firebase-functions/params');
const welcomeMessage = defineString('WELCOME_MESSAGE', {default: 'Hello World',
description: 'The greeting that is returned to the caller of this function'});
const onlyPhoneNumbers = defineString('PHONE_NUMBER', {input: {text:
{validationRegex: /\d{3}-\d{3}-\d{4}/, validationErrorMessage: "Please enter
a phone number in the format XXX-YYY-ZZZZ"}}});
const selectedOption = defineString('PARITY', {input: {select: {options:
[{value: "odd"}, {value: "even"}]}}})
const storageBucket = defineString('BUCKET', {input: {resource: {type:
"storage.googleapis.com/Bucket"}}, description: "This will automatically
populate the selector field with the deploying Cloud Project’s
storage buckets"})
পরামিতি প্রকার
প্যারামিটারাইজড কনফিগারেশন প্যারামিটার মানগুলির জন্য শক্তিশালী টাইপিং প্রদান করে এবং ক্লাউড সিক্রেট ম্যানেজারের গোপনীয়তা সমর্থন করে। সমর্থিত প্রকারগুলি হল:
- গোপন
- স্ট্রিং
- বুলিয়ান
- পূর্ণসংখ্যা
- ভাসা
পরামিতি মান এবং অভিব্যক্তি
ফায়ারবেস ডিপ্লয় করার সময় এবং আপনার ফাংশন চালানোর সময় উভয় ক্ষেত্রেই আপনার প্যারামিটার মূল্যায়ন করে। এই দ্বৈত পরিবেশের কারণে, প্যারামিটার মানগুলির তুলনা করার সময় এবং আপনার ফাংশনের জন্য রানটাইম বিকল্পগুলি সেট করতে সেগুলি ব্যবহার করার সময় কিছু অতিরিক্ত যত্ন নেওয়া আবশ্যক।
রানটাইম বিকল্প হিসাবে আপনার ফাংশনে একটি প্যারামিটার পাস করতে, এটি সরাসরি পাস করুন:
const { onRequest } = require('firebase-functions/v2/https');
const { defineInt } = require('firebase-functions/params');
const minInstancesConfig = defineInt('HELLO\_WORLD\_MININSTANCES');
export const helloworld = onRequest(
{ minInstances: minInstancesConfig },
(req, res) => {
//…
অতিরিক্তভাবে, কোন বিকল্পটি বেছে নেবেন তা জানার জন্য আপনাকে যদি একটি প্যারামিটারের সাথে তুলনা করতে হয়, তাহলে মান পরীক্ষা করার পরিবর্তে আপনাকে অন্তর্নির্মিত তুলনাকারী ব্যবহার করতে হবে:
const { onRequest } = require('firebase-functions/v2/https');
const { defineBool } = require('firebase-functions/params');
const environment = params.defineString(‘ENVIRONMENT’, {default: ‘dev’});
// use built-in comparators
const minInstancesConfig = environment.equals('PRODUCTION').thenElse(10, 1);
export const helloworld = onRequest(
{ minInstances: minInstancesConfig },
(req, res) => {
//…
প্যারামিটার এবং প্যারামিটার এক্সপ্রেশন যা শুধুমাত্র রানটাইমে ব্যবহৃত হয় তাদের value
ফাংশন দিয়ে অ্যাক্সেস করা যেতে পারে:
const { onRequest } = require('firebase-functions/v2/https');
const { defineString } = require('firebase-functions/params');
const welcomeMessage = defineString('WELCOME_MESSAGE');
// To use configured parameters inside the config for a function, provide them
// directly. To use them at runtime, call .value() on them.
export const helloworld = onRequest(
(req, res) => {
res.send(`${welcomeMessage.value()}! I am a function.`);
}
);
অন্তর্নির্মিত পরামিতি
ক্লাউড ফাংশন SDK তিনটি পূর্ব-নির্ধারিত প্যারামিটার অফার করে, যা firebase-functions/params
সাবপ্যাকেজ থেকে পাওয়া যায়:
-
projectId
— ক্লাউড প্রকল্প যেখানে ফাংশন চলছে। -
databaseUrl
— ফাংশনের সাথে যুক্ত রিয়েলটাইম ডেটাবেস উদাহরণের URL (যদি ফায়ারবেস প্রকল্পে সক্ষম করা থাকে)। -
storageBucket
— ফাংশনের সাথে যুক্ত ক্লাউড স্টোরেজ বালতি (যদি ফায়ারবেস প্রকল্পে সক্ষম করা থাকে)।
এই ফাংশনগুলি সমস্ত ক্ষেত্রে ব্যবহারকারী-সংজ্ঞায়িত স্ট্রিং প্যারামিটারের মতো, তা ছাড়া, যেহেতু তাদের মানগুলি সর্বদা Firebase CLI-এর কাছে পরিচিত, তাই তাদের মানগুলি কখনই স্থাপনার জন্য অনুরোধ করা হবে না বা .env
ফাইলগুলিতে সংরক্ষণ করা হবে না।
গোপন পরামিতি
defineSecret()
ব্যবহার করে সংজ্ঞায়িত Secret
টাইপের প্যারামিটার, স্ট্রিং প্যারামিটার উপস্থাপন করে যার একটি মান ক্লাউড সিক্রেট ম্যানেজারে সংরক্ষিত থাকে। একটি স্থানীয় .env
ফাইলের বিরুদ্ধে চেক করার পরিবর্তে এবং অনুপস্থিত থাকলে ফাইলটিতে একটি নতুন মান লেখার পরিবর্তে, গোপন পরামিতিগুলি ক্লাউড সিক্রেট ম্যানেজারের অস্তিত্বের বিরুদ্ধে পরীক্ষা করে এবং স্থাপনার সময় একটি নতুন গোপনের মূল্যের জন্য ইন্টারেক্টিভভাবে প্রম্পট করে৷
এইভাবে সংজ্ঞায়িত গোপন পরামিতিগুলি অবশ্যই পৃথক ফাংশনের সাথে আবদ্ধ হতে হবে যেগুলির অ্যাক্সেস থাকা উচিত:
const { onRequest } = require("functions/v2/https");
const { defineSecret } = require('firebase-functions/params');
const discordApiKey = defineSecret('DISCORD_API_KEY');
export const posttodiscord = onRequest(
{ secrets: [discordApiKey] },
(req, res) => {
const apiKey = discordApiKey.value();
//…
যেহেতু ফাংশনটি কার্যকর না হওয়া পর্যন্ত গোপনীয়তার মানগুলি লুকানো থাকে, আপনি আপনার ফাংশনটি কনফিগার করার সময় সেগুলি ব্যবহার করতে পারবেন না।
পরিবেশ পরিবর্তনশীল
Firebase-এর জন্য ক্লাউড ফাংশন আপনার অ্যাপ্লিকেশন রানটাইমে একটি .env
ফাইলে নির্দিষ্ট করা পরিবেশ ভেরিয়েবল লোড করার জন্য dotenv ফাইল ফর্ম্যাট সমর্থন করে। একবার স্থাপন করা হলে, পরিবেশ ভেরিয়েবলগুলি process.env
ইন্টারফেসের মাধ্যমে পড়া যাবে।
আপনার পরিবেশকে এইভাবে কনফিগার করতে, আপনার প্রকল্পে একটি .env
ফাইল তৈরি করুন, পছন্দসই ভেরিয়েবল যোগ করুন এবং স্থাপন করুন:
আপনার
functions/
ডিরেক্টরিতে একটি.env
ফাইল তৈরি করুন:# Directory layout: # my-project/ # firebase.json # functions/ # .env # package.json # index.js
সম্পাদনার জন্য
.env
ফাইলটি খুলুন এবং পছন্দসই কীগুলি যুক্ত করুন৷ উদাহরণ স্বরূপ:PLANET=Earth AUDIENCE=Humans
ফাংশন স্থাপন করুন এবং যাচাই করুন যে পরিবেশ ভেরিয়েবল লোড হয়েছে:
firebase deploy --only functions # ... # i functions: Loaded environment variables from .env. # ...
একবার আপনার কাস্টম এনভায়রনমেন্ট ভেরিয়েবল স্থাপন করা হলে, আপনার ফাংশন কোড process.env
সিনট্যাক্সের মাধ্যমে সেগুলি অ্যাক্সেস করতে পারে:
// Responds with "Hello Earth and Humans"
exports.hello = onRequest((request, response) => {
response.send(`Hello ${process.env.PLANET} and ${process.env.AUDIENCE}`);
});
পরিবেশ ভেরিয়েবলের একাধিক সেট স্থাপন করা হচ্ছে
যদি আপনার ফায়ারবেস প্রকল্পগুলির জন্য পরিবেশের ভেরিয়েবলের একটি বিকল্প সেটের প্রয়োজন হয় (যেমন স্টেজিং বনাম উত্পাদন), একটি .env. <project or alias >
ফাইল করুন এবং সেখানে আপনার প্রকল্প-নির্দিষ্ট পরিবেশের ভেরিয়েবল লিখুন। .env
এবং প্রজেক্ট-নির্দিষ্ট .env
ফাইলের পরিবেশ ভেরিয়েবল (যদি তারা বিদ্যমান থাকে) সমস্ত স্থাপন করা ফাংশনে অন্তর্ভুক্ত করা হবে।
উদাহরণস্বরূপ, একটি প্রকল্পে এই তিনটি ফাইল অন্তর্ভুক্ত থাকতে পারে যার মধ্যে উন্নয়ন এবং উত্পাদনের জন্য সামান্য ভিন্ন মান রয়েছে:
.env | .env.dev | .env.prod |
গ্রহ=পৃথিবী AUDIENCE=মানুষ | AUDIENCE=দেব মানুষ | AUDIENCE=প্রোড হিউম্যানস |
সেই পৃথক ফাইলগুলির মানগুলি দেওয়া, আপনার ফাংশনগুলির সাথে স্থাপন করা পরিবেশের ভেরিয়েবলের সেটটি আপনার লক্ষ্য প্রকল্পের উপর নির্ভর করে পরিবর্তিত হবে:
$ firebase use dev
$ firebase deploy --only functions
i functions: Loaded environment variables from .env, .env.dev.
# Deploys functions with following user-defined environment variables:
# PLANET=Earth
# AUDIENCE=Dev Humans
$ firebase use prod
$ firebase deploy --only functions
i functions: Loaded environment variables from .env, .env.prod.
# Deploys functions with following user-defined environment variables:
# PLANET=Earth
# AUDIENCE=Prod Humans
সংরক্ষিত পরিবেশ পরিবর্তনশীল
কিছু পরিবেশ পরিবর্তনশীল কী অভ্যন্তরীণ ব্যবহারের জন্য সংরক্ষিত। আপনার .env
ফাইলগুলিতে এই কীগুলির কোনওটি ব্যবহার করবেন না:
- X_GOOGLE_ দিয়ে শুরু হওয়া সমস্ত কী
- সমস্ত কী শুরু হচ্ছে EXT_
- FIREBASE_ দিয়ে শুরু হওয়া সমস্ত কী
- নিম্নলিখিত তালিকা থেকে যেকোনো কী:
- CLOUD_RUNTIME_CONFIG
- ENTRY_POINT
- GCP_PROJECT
- GCLOUD_PROJECT
- GOOGLE_CLOUD_PROJECT
- FUNCTION_TRIGGER_TYPE
- FUNCTION_NAME
- FUNCTION_MEMORY_MB
- FUNCTION_TIMEOUT_SEC
- FUNCTION_IDENTITY
- FUNCTION_REGION
- FUNCTION_TARGET
- FUNCTION_SIGNATURE_TYPE
- K_SERVICE
- K_REVISION
- পোর্ট
- K_CONFIGURATION
সংবেদনশীল কনফিগারেশন তথ্য সংরক্ষণ করুন এবং অ্যাক্সেস করুন
.env
ফাইলে সংরক্ষিত এনভায়রনমেন্ট ভেরিয়েবলগুলি ফাংশন কনফিগারেশনের জন্য ব্যবহার করা যেতে পারে, তবে আপনার সেগুলিকে সংবেদনশীল তথ্য যেমন ডাটাবেস শংসাপত্র বা API কী সংরক্ষণ করার একটি নিরাপদ উপায় হিসাবে বিবেচনা করা উচিত নয়। এটি বিশেষভাবে গুরুত্বপূর্ণ যদি আপনি আপনার .env
ফাইলগুলিকে উত্স নিয়ন্ত্রণে পরীক্ষা করেন৷
আপনাকে সংবেদনশীল কনফিগারেশন তথ্য সঞ্চয় করতে সাহায্য করার জন্য, Firebase-এর জন্য ক্লাউড ফাংশনগুলি Google ক্লাউড সিক্রেট ম্যানেজারের সাথে একীভূত হয়৷ এই এনক্রিপ্ট করা পরিষেবা কনফিগারেশন মানগুলিকে নিরাপদে সঞ্চয় করে, যখন প্রয়োজন তখনও আপনার ফাংশনগুলি থেকে সহজে অ্যাক্সেসের অনুমতি দেয়।
একটি গোপন তৈরি করুন এবং ব্যবহার করুন
একটি গোপনীয়তা তৈরি করতে, Firebase CLI ব্যবহার করুন৷
একটি গোপন তৈরি এবং ব্যবহার করতে:
আপনার স্থানীয় প্রকল্প ডিরেক্টরির রুট থেকে, নিম্নলিখিত কমান্ডটি চালান:
firebase functions:secrets:set SECRET_NAME
SECRET_NAME এর জন্য একটি মান লিখুন।
CLI একটি সফল বার্তা প্রতিধ্বনিত করে এবং সতর্ক করে যে পরিবর্তন কার্যকর করার জন্য আপনাকে অবশ্যই ফাংশন স্থাপন করতে হবে।
স্থাপন করার আগে, নিশ্চিত করুন যে আপনার ফাংশন কোড ফাংশনটিকে
runWith
প্যারামিটার ব্যবহার করে গোপন অ্যাক্সেস করতে দেয়:const { onRequest } = require("functions/v2/https"); exports.processpayment = onRequest( { secrets: ["SECRET_NAME"] }, (data, context) => { const myBillingService = initializeBillingService( // reference the secret value process.env.SECRET_NAME ); // Process the payment } );
ক্লাউড ফাংশন স্থাপন করুন:
firebase deploy --only functions
এখন আপনি অন্যান্য পরিবেশ পরিবর্তনশীল মত এটি অ্যাক্সেস করতে সক্ষম হবেন. বিপরীতভাবে, যদি অন্য একটি ফাংশন যা runWith
এ গোপনীয়তা নির্দিষ্ট করে না সে গোপনটি অ্যাক্সেস করার চেষ্টা করে, এটি একটি অনির্ধারিত মান পায়:
exports.anotherendpoint = onRequest((request, response) => {
response.send(`The secret API key is ${process.env.SECRET_NAME}`);
// responds with "The secret API key is undefined" because the `runWith` parameter is missing
});
একবার আপনার ফাংশন স্থাপন করা হলে, এটি গোপন মান অ্যাক্সেস করতে পারবে। শুধুমাত্র যে ফাংশনগুলি বিশেষভাবে তাদের runWith
প্যারামিটারে একটি গোপনীয়তা অন্তর্ভুক্ত করে তাদের পরিবেশ পরিবর্তনশীল হিসাবে সেই গোপনীয়তায় অ্যাক্সেস থাকবে। এটি আপনাকে নিশ্চিত করতে সাহায্য করে যে গোপন মানগুলি শুধুমাত্র সেখানেই উপলব্ধ রয়েছে যেখানে সেগুলি প্রয়োজন, দুর্ঘটনাক্রমে একটি গোপনীয়তা ফাঁস হওয়ার ঝুঁকি হ্রাস করে৷
গোপনীয়তা পরিচালনা
আপনার গোপনীয়তা পরিচালনা করতে Firebase CLI ব্যবহার করুন। এইভাবে গোপনীয়তাগুলি পরিচালনা করার সময়, মনে রাখবেন যে কিছু CLI পরিবর্তনের জন্য আপনাকে সংশ্লিষ্ট ফাংশনগুলিকে সংশোধন এবং/অথবা পুনরায় স্থাপন করতে হবে। বিশেষভাবে:
- যখনই আপনি একটি গোপনের জন্য একটি নতুন মান সেট করেন, আপনাকে অবশ্যই সেই সমস্ত ফাংশনগুলিকে পুনরায় স্থাপন করতে হবে যা তাদের কাছে সেই গোপনীয়তার উল্লেখ করে সর্বশেষ মানটি নিতে।
- আপনি যদি একটি গোপনীয়তা মুছে ফেলেন, নিশ্চিত করুন যে আপনার নিয়োজিত ফাংশনগুলির কোনটিও সেই গোপনীয়তার উল্লেখ করে না। যে ফাংশনগুলি একটি গোপন মান ব্যবহার করে যা মুছে ফেলা হয়েছে তা নীরবে ব্যর্থ হবে।
এখানে গোপন ব্যবস্থাপনার জন্য Firebase CLI কমান্ডগুলির একটি সারাংশ রয়েছে:
# Change the value of an existing secret firebase functions:secrets:set SECRET_NAME # View the value of a secret functions:secrets:access SECRET_NAME # Destroy a secret functions:secrets:destroy SECRET_NAME # View all secret versions and their state functions:secrets:get SECRET_NAME # Automatically clean up all secrets that aren't referenced by any of your functions functions:secrets:prune
access
এবং destroy
কমান্ডের জন্য, আপনি একটি নির্দিষ্ট সংস্করণ পরিচালনা করতে ঐচ্ছিক সংস্করণ প্যারামিটার প্রদান করতে পারেন। উদাহরণ স্বরূপ:
functions:secrets:access SECRET_NAME[@VERSION]
এই ক্রিয়াকলাপগুলি সম্পর্কে আরও তথ্যের জন্য, CLI সাহায্য দেখতে কমান্ড সহ পাস -h
করুন।
কিভাবে গোপন বিল করা হয়
সিক্রেট ম্যানেজার কোনো খরচ ছাড়াই 6টি সক্রিয় গোপন সংস্করণের অনুমতি দেয়। এর মানে হল যে আপনি একটি ফায়ারবেস প্রকল্পে প্রতি মাসে 6টি গোপনীয়তা রাখতে পারেন।
ডিফল্টরূপে, Firebase CLI স্বয়ংক্রিয়ভাবে অব্যবহৃত গোপন সংস্করণগুলিকে যথাযথভাবে ধ্বংস করার চেষ্টা করে, যেমন আপনি যখন গোপনের একটি নতুন সংস্করণের সাথে ফাংশন স্থাপন করেন। এছাড়াও, আপনি functions:secrets:destroy
এবং functions:secrets:prune
ব্যবহার করে সক্রিয়ভাবে অব্যবহৃত গোপনীয়তা পরিষ্কার করতে পারেন।
সিক্রেট ম্যানেজার একটি গোপনে 10,000টি বিলবিহীন মাসিক অ্যাক্সেস অপারেশনের অনুমতি দেয়। ফাংশন দৃষ্টান্তগুলি প্রতিবার ঠান্ডা শুরু হওয়ার সময় তাদের runWith
প্যারামিটারে নির্দিষ্ট গোপনীয়তাগুলি পড়ে। যদি আপনার কাছে অনেকগুলি ফাংশন ইনস্ট্যান্স থাকে যা প্রচুর গোপনীয়তা পড়ে, আপনার প্রকল্প এই ভাতা ছাড়িয়ে যেতে পারে, এই সময়ে আপনাকে প্রতি 10,000 অ্যাক্সেস অপারেশনের জন্য $0.03 চার্জ করা হবে।
আরও তথ্যের জন্য, সিক্রেট ম্যানেজার প্রাইসিং দেখুন।
এমুলেটর সমর্থন
dotenv-এর সাথে পরিবেশগত কনফিগারেশন একটি স্থানীয় ক্লাউড ফাংশন এমুলেটরের সাথে ইন্টারঅপারেট করার জন্য ডিজাইন করা হয়েছে।
একটি স্থানীয় ক্লাউড ফাংশন এমুলেটর ব্যবহার করার সময়, আপনি একটি .env.local
ফাইল সেট আপ করে আপনার প্রকল্পের জন্য পরিবেশ ভেরিয়েবল ওভাররাইড করতে পারেন৷ .env.local
এর বিষয়বস্তু .env
এবং প্রজেক্ট-নির্দিষ্ট .env
ফাইলের চেয়ে অগ্রাধিকার পায়।
উদাহরণস্বরূপ, একটি প্রকল্পে উন্নয়ন এবং স্থানীয় পরীক্ষার জন্য সামান্য ভিন্ন মান ধারণকারী এই তিনটি ফাইল অন্তর্ভুক্ত থাকতে পারে:
.env | .env.dev | .env.local |
গ্রহ=পৃথিবী AUDIENCE=মানুষ | AUDIENCE=দেব মানুষ | AUDIENCE=স্থানীয় মানুষ |
স্থানীয় প্রেক্ষাপটে শুরু হলে, এমুলেটর পরিবেশের ভেরিয়েবল লোড করে যেমন দেখানো হয়েছে:
$ firebase emulators:start
i emulators: Starting emulators: functions
# Starts emulator with following environment variables:
# PLANET=Earth
# AUDIENCE=Local Humans
ক্লাউড ফাংশন এমুলেটরে গোপনীয়তা এবং প্রমাণপত্রাদি
ক্লাউড ফাংশন এমুলেটর সংবেদনশীল কনফিগারেশন তথ্য সংরক্ষণ এবং অ্যাক্সেস করতে গোপনীয়তার ব্যবহার সমর্থন করে। ডিফল্টরূপে, এমুলেটর অ্যাপ্লিকেশন ডিফল্ট শংসাপত্র ব্যবহার করে আপনার উত্পাদন গোপনীয়তা অ্যাক্সেস করার চেষ্টা করবে৷ সিআই এনভায়রনমেন্টের মতো নির্দিষ্ট পরিস্থিতিতে, অনুমতি সীমাবদ্ধতার কারণে এমুলেটর গোপন মান অ্যাক্সেস করতে ব্যর্থ হতে পারে।
এনভায়রনমেন্ট ভেরিয়েবলের জন্য ক্লাউড ফাংশন এমুলেটর সমর্থনের মতো, আপনি একটি .secret.local
ফাইল সেট আপ করে গোপন মানগুলিকে ওভাররাইড করতে পারেন। এটি আপনার জন্য স্থানীয়ভাবে আপনার ফাংশনগুলি পরীক্ষা করা সহজ করে তোলে, বিশেষ করে যদি আপনার গোপন মানটিতে অ্যাক্সেস না থাকে।