আপনি যখন একটি এক্সটেনশন তৈরি করেন, তখন আপনি Cloud Functions ব্যবহার করে এর যুক্তি লেখেন, যেমন আপনি একটি ফাংশন লিখবেন যেটি শুধুমাত্র আপনার নিজের প্রকল্পে ব্যবহার করা হবে। আপনি extension.yaml
ফাইলে আপনার ফাংশনগুলি ঘোষণা করেন এবং যখন ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করেন, তখন এই ফাংশনগুলি তাদের প্রকল্পে স্থাপন করা হয়।
Cloud Functions ব্যবহার করার বিষয়ে সাধারণ তথ্যের জন্য Cloud Functions ডকুমেন্টেশন দেখুন।
১ম এবং ২য় প্রজন্মের Cloud Functions
ফায়ারবেস ১ম-প্রজন্ম এবং ২য়-প্রজন্মের Cloud Functions উভয়কেই সমর্থন করে। যাইহোক, ফায়ারবেস এক্সটেনশনে বর্তমানে কিছু বিধিনিষেধ রয়েছে যে প্রজন্মের ক্লাউড ফাংশন আপনি নির্দিষ্ট ট্রিগার প্রকারের সাথে ব্যবহার করতে পারেন। এই কারণে, অনেক এক্সটেনশন 1ম এবং 2য় প্রজন্মের ফাংশনগুলির মিশ্রণ অন্তর্ভুক্ত করে।
নিচে প্রতিটি ট্রিগার প্রকারের জন্য ফাংশন জেনারেশন সমর্থন উল্লেখ করা হয়েছে।
বিশেষ বিবেচনা
কিছু ফাংশনের সংজ্ঞার জন্য আপনাকে এমন তথ্য নির্দিষ্ট করতে হবে যা
extension.yaml
ফাইলেও উল্লেখ করা আছে। উদাহরণস্বরূপ, ক্লাউড ফায়ারস্টোরের একটিdocument()
পদ্ধতি রয়েছে যা দেখার জন্য নথির প্যাটার্ন নির্দিষ্ট করে এবংextension.yaml
এ এর সংশ্লিষ্ট ঘোষণার একটিresource
ক্ষেত্র রয়েছে যা একই নির্দিষ্ট করে।এই পরিস্থিতিতে,
extension.yaml
ফাইলে নির্দিষ্ট করা কনফিগারেশন ব্যবহার করা হয় এবং ফাংশনের সংজ্ঞায় উল্লেখ করা কনফিগারেশন উপেক্ষা করা হয়।ডকুমেন্টেশনের স্বার্থে, নির্বিশেষে ফাংশন সংজ্ঞায় কনফিগার করা মান নির্দিষ্ট করা সাধারণ অভ্যাস। এই পৃষ্ঠার উদাহরণ এই প্যাটার্ন অনুসরণ করে.
Cloud Functions 1st gen SDK-এর একটি
functions.config()
পদ্ধতি এবংfunctions:config:set
CLI কমান্ড রয়েছে যা আপনি 1st gen ফাংশনে প্যারামিটারাইজড মানগুলির সাথে কাজ করতে ব্যবহার করতে পারেন৷ এই কৌশলটি Cloud Functions অবমূল্যায়িত হয় এবং কোনও এক্সটেনশনে মোটেও কাজ করবে না । পরিবর্তে,functions.params
মডিউল (প্রস্তাবিত) বাprocess.env
ব্যবহার করুন।
টাইপস্ক্রিপ্ট ব্যবহার করে
আপনার নিজস্ব এক্সটেনশন ডেভেলপ করার জন্য বেশিরভাগ ডকুমেন্টেশন Cloud Functions for Firebase জন্য JavaScript ব্যবহার করে ওয়ার্কফ্লো বর্ণনা করে। তবে আপনি পরিবর্তে টাইপস্ক্রিপ্ট ব্যবহার করে আপনার ফাংশনগুলি লিখতে পারেন।
আসলে, সমস্ত অফিসিয়াল Firebase এক্সটেনশন টাইপস্ক্রিপ্টে লেখা হয়। আপনার এক্সটেনশনের জন্য TypeScript ব্যবহার করার জন্য কিছু সেরা অনুশীলনের জন্য আপনি সেই এক্সটেনশনগুলি পর্যালোচনা করতে পারেন।
আপনি যদি টাইপস্ক্রিপ্টে আপনার এক্সটেনশনের ফাংশনগুলি লেখেন, তাহলে আপনার এক্সটেনশন ইনস্টল করার আগে আপনাকে অবশ্যই নিম্নলিখিতগুলি করতে হবে:
জাভাস্ক্রিপ্টে আপনার এক্সটেনশনের ফাংশন সোর্স কোড কম্পাইল করুন।
firebase ext:dev:init
কমান্ড আপনাকে আপনার ফাংশন লেখার জন্য TypeScript বেছে নিতে দেয়। কমান্ডটি আপনাকে একটি সম্পূর্ণ, ইনস্টলযোগ্য এক্সটেনশনের পাশাপাশি একটি বিল্ড স্ক্রিপ্ট সরবরাহ করে যা আপনিnpm run build
দিয়ে চালাতে পারেন ।আপনার
package.json
ফাইলে, জেনারেট করা জাভাস্ক্রিপ্টেmain
ক্ষেত্রটি নির্দেশ করতে ভুলবেন না।আপনি যদি স্থানীয় উত্স থেকে আপনার এক্সটেনশন ইনস্টল বা আপলোড করছেন, প্রথমে আপনার টাইপস্ক্রিপ্ট ফাইলগুলি কম্পাইল করুন৷
সমর্থিত ফাংশন ট্রিগার
HTTP ট্রিগার
একটি HTTP-ট্রিগার করা ফাংশন একটি সর্বজনীন https
এন্ডপয়েন্টে স্থাপন করা হয় এবং যখন এন্ডপয়েন্ট অ্যাক্সেস করা হয় তখন চলে।
HTTP-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে HTTP অনুরোধের মাধ্যমে কল ফাংশনগুলি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onRequest(async (req, resp) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
কলযোগ্য ফাংশন
কলযোগ্য ফাংশনগুলি এইচটিটিপি-ট্রিগার করা ফাংশনগুলির অনুরূপ, তবে তারা একটি প্রোটোকল প্রয়োগ করে যা তাদের আপনার ক্লায়েন্ট-সাইড কোড থেকে কল করতে সুবিধাজনক করে তোলে।
কলযোগ্য ফাংশন ব্যবহার করার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে আপনার অ্যাপ থেকে কল ফাংশনগুলি দেখুন৷
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { https } from "firebase-functions/v1";
export const yourFunctionName = https.onCall(async (data, context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
runtime: nodejs16
httpsTrigger: {}
- name: anotherFunction
type: ...
নির্ধারিত ফাংশন ট্রিগার
একটি নির্ধারিত ফাংশন একটি কাস্টমাইজযোগ্য সময়সূচীর উপর ভিত্তি করে বারবার চলে।
নির্ধারিত ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে সময়সূচী ফাংশন দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.schedule("every 6 hours").onRun((context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: 'every 5 minutes'
- name: anotherFunction
type: ...
Here are the available subfields for scheduleTrigger
:
মাঠ | বর্ণনা |
---|---|
schedule (প্রয়োজনীয়) | আপনি যে ফ্রিকোয়েন্সিটিতে ফাংশনটি চালাতে চান তা। এই ক্ষেত্রটি স্ট্রিংগুলি গ্রহণ করতে পারে যা হয় সিনট্যাক্স ব্যবহার করে ( একক কোটে মোড়ানো প্রয়োজন):
|
timeZone (ঐচ্ছিক) | যে সময় অঞ্চলে সময়সূচী চলবে। |
আপনি যদি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় সময়সূচী কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml
ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource
ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
scheduleTrigger:
schedule: ${SCHEDULE_FREQUENCY}
- name: anotherFunction
type: ...
params:
- param: SCHEDULE_FREQUENCY
label: Schedule
description: How often do you want to run yourFunctionName()?
type: string
default: 'every 5 minutes' # Specifying a default is optional.
required: true
টাস্ক সারি ট্রিগার
আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্টগুলিতে বা অ্যাডমিন SDK-এর TaskQueue.enqueue()
পদ্ধতি ব্যবহার করে আপনার এক্সটেনশনের টাস্ক সারিতে ম্যানুয়ালি যোগ করা হলে একটি টাস্ক কিউ ফাংশন ট্রিগার হয়৷
লাইফসাইকেল ইভেন্টগুলি পরিচালনা করে এমন ফাংশন সম্পর্কিত তথ্যের জন্য আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্টগুলি পরিচালনা করুন ।
টাস্ক সারি ফাংশনগুলি লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ক্লাউড কার্যগুলির সাথে এনকুই ফাংশনগুলি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { tasks } from "firebase-functions/v1";
export const yourFunctionName = tasks.taskQueue().onDispatch(async (data, context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: myTaskFunction
type: firebaseextensions.v1beta.function
description: >-
Perform a task when triggered by a lifecycle event
properties:
taskQueueTrigger: {}
taskQueueTrigger
প্রপার্টি সেট করুন যেটি হয় {}
বা বিকল্পগুলির একটি মানচিত্র যা হারের সীমা টিউন করে এবং টাস্ক সারির আচরণ পুনরায় চেষ্টা করে ( টাস্ক কিউ টিউন করা দেখুন)।
আপনি যদি আপনার এক্সটেনশনের লাইফসাইকেল ইভেন্টগুলিতে আপনার ফাংশনটি ট্রিগার করতে চান তবে ফাংশনের নাম এবং একটি ঐচ্ছিক প্রক্রিয়াকরণ বার্তা সহ lifecycleEvents
রেকর্ড যোগ করুন, যা প্রক্রিয়াকরণ শুরু হলে Firebase কনসোলে প্রদর্শিত হবে৷
lifecycleEvents:
onInstall:
function: myTaskFunction
processingMessage: Resizing your existing images
onUpdate:
function: myOtherTaskFunction
processingMessage: Setting up your extension
onConfigure:
function: myOtherTaskFunction
processingMessage: Setting up your extension
Analytics
একটি নির্দিষ্ট বিশ্লেষণ ইভেন্ট লগ হয়ে গেলে একটি অ্যানালিটিক্স-ট্রিগার ফাংশন চলে।
বিশ্লেষণ-ট্রিগারযুক্ত ফাংশনগুলি লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে গুগল অ্যানালিটিক্স ট্রিগারগুলি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { analytics } from "firebase-functions/v1";
export const yourFunctionName = analytics.event("event_name").onLog((event, context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/ga_event
- name: anotherFunction
type: ...
আপনি যদি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় শোনার জন্য Analytics ইভেন্ট কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml
ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource
ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.analytics/eventTypes/event.log
resource: projects/${PROJECT_ID}/events/${EVENT_NAME}
- name: anotherFunction
type: ...
params:
- param: EVENT_NAME
label: Analytics event
description: What event do you want to respond to?
type: string
default: ga_event # Specifying a default is optional.
required: true
Authentication
যখন কোনও ব্যবহারকারী তৈরি বা মুছে ফেলা হয় তখন একটি প্রমাণীকরণ-ট্রিগার ফাংশন চলে।
প্রমাণ-ট্রিগারযুক্ত ফাংশনগুলি লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস প্রমাণীকরণ ট্রিগারগুলি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { auth } from "firebase-functions/v1";
export const yourFunctionName = auth.user().onCreate((user, context) => {
// ...
});
export const yourFunctionName2 = auth.user().onDelete((user, context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/firebase.auth/eventTypes/user.create
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
নিম্নলিখিত টেবিলটি দেখায় যে কীভাবে সমর্থিত Authentication ইভেন্টের প্রতিটি প্রকার নির্দিষ্ট করা যায়:
Cloud Functions ইভেন্ট ট্রিগার | eventType | বর্ণনা |
---|---|---|
onCreate() | providers/firebase.auth/eventTypes/user.create | নতুন ব্যবহারকারী তৈরি করা হয়েছে |
onDelete() | providers/firebase.auth/eventTypes/user.delete | ব্যবহারকারী মুছে ফেলা হয়েছে |
Cloud Firestore
কোনও ডকুমেন্ট তৈরি, আপডেট বা মুছে ফেলা হলে ক্লাউড ফায়ারস্টোর-ট্রিগারযুক্ত ফাংশনটি চলে।
Firestore-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ক্লাউড ফায়ারস্টোর ট্রিগারগুলি দেখুন৷
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { firestore } from "firebase-functions/v1";
export const yourFunctionName = firestore.document("collection/{doc_id}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = firestore.document("collection/{doc_id}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = firestore.document("collection/{doc_id}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = firestore.document("collection/{doc_id}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/collection/{documentID}
- name: anotherFunction
type: ...
নিম্নলিখিত সারণীটি দেখায় কিভাবে সমর্থিত Cloud Firestore ইভেন্ট প্রকারের প্রতিটি নির্দিষ্ট করতে হয়:
Cloud Functions ইভেন্ট ট্রিগার | eventType | বর্ণনা |
---|---|---|
onCreate() | providers/cloud.firestore/eventTypes/document.create | নতুন নথি তৈরি করা হয়েছে |
onDelete() | providers/cloud.firestore/eventTypes/document.delete | নথি মুছে ফেলা হয়েছে |
onUpdate() | providers/cloud.firestore/eventTypes/document.update | নথি আপডেট করা হয়েছে৷ |
onWrite() | providers/cloud.firestore/eventTypes/document.write | নথি তৈরি, মুছে ফেলা বা আপডেট করা হয়েছে৷ |
আপনি যদি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় ডকুমেন্ট পাথ কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml
ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource
ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/cloud.firestore/eventTypes/document.write
resource: projects/${PROJECT_ID}/databases/(default)/documents/${YOUR_DOCUMENT_PATH}
- name: anotherFunction
type: ...
params:
- param: YOUR_DOCUMENT_PATH
label: Cloud Firestore path
description: Where do you want to watch for changes?
type: string
default: path/to/{documentID} # Specifying a default is optional.
required: true
Pub/Sub
যখন কোনও নির্দিষ্ট বিষয়ে কোনও বার্তা প্রকাশিত হয় তখন একটি পাব/উপ-ট্রিগার ফাংশন চলে।
পাব/সাব- ট্রিগারযুক্ত ফাংশনগুলি লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে পাব/সাব ট্রিগারগুলি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { pubsub } from "firebase-functions/v1";
export const yourFunctionName = pubsub.topic("topic_name").onPublish((message, context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/topic-name
- name: anotherFunction
type: ...
আপনি যদি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় Pub/Sub বিষয় কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml
ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource
ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.pubsub.topic.publish
resource: projects/${PROJECT_ID}/topics/${PUBSUB_TOPIC}
- name: anotherFunction
type: ...
params:
- param: PUBSUB_TOPIC
label: Pub/Sub topic
description: Which Pub/Sub topic do you want to watch for messages?
type: string
default: topic-name # Specifying a default is optional.
required: true
Realtime Database
একটি রিয়েলটাইম ডেটাবেস-ট্রিগারড ফাংশন চলে যখন একটি নির্দিষ্ট প্যাটার্নের সাথে মেলে এমন একটি পাথ তৈরি, আপডেট বা মুছে ফেলা হয়।
আরটিডিবি-ট্রিগারড ফাংশনগুলি লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে রিয়েলটাইম ডাটাবেস ট্রিগারগুলি দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { database } from "firebase-functions/v1";
export const yourFunctionName = database.ref("path/to/{item}")
.onCreate((snapshot, context) => {
// ...
});
export const yourFunctionName2 = database.ref("path/to/{item}")
.onUpdate((change, context) => {
// ...
});
export const yourFunctionName3 = database.ref("path/to/{item}")
.onDelete((snapshot, context) => {
// ...
});
export const yourFunctionName4 = database.ref("path/to/{item}")
.onWrite((change, context) => {
// onWrite triggers on creation, update, and deletion.
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/path/to/{itemId}
- name: anotherFunction
type: ...
নিম্নলিখিত সারণীটি দেখায় কিভাবে সমর্থিত Cloud Firestore ইভেন্ট প্রকারের প্রতিটি নির্দিষ্ট করতে হয়:
Cloud Functions ইভেন্ট ট্রিগার | eventType | বর্ণনা |
---|---|---|
onCreate() | providers/google.firebase.database/eventTypes/ref.create | ডেটা তৈরি করা হয়েছে |
onDelete() | providers/google.firebase.database/eventTypes/ref.delete | ডেটা মুছে ফেলা হয়েছে |
onUpdate() | providers/google.firebase.database/eventTypes/ref.update | ডেটা আপডেট করা হয়েছে |
onWrite() | providers/google.firebase.database/eventTypes/ref.write | ডেটা তৈরি, মুছে ফেলা বা আপডেট করা হয়েছে |
আপনি যদি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় দেখার পাথ কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml
ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource
ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: providers/google.firebase.database/eventTypes/ref.create
# DATABASE_INSTANCE (project's default instance) is an auto-populated
# parameter value. You can also specify an instance.
resource: projects/_/instances/${DATABASE_INSTANCE}/refs/${DB_PATH}
- name: anotherFunction
type: ...
params:
- param: DB_PATH
label: Realtime Database path
description: Where do you want to watch for changes?
type: string
default: path/to/{itemId} # Specifying a default is optional.
required: true
Remote Config
একটি প্রজেক্টের প্যারামিটার টেমপ্লেট আপডেট করা হলে একটি দূরবর্তী কনফিগার-ট্রিগার ফাংশন চলে।
রিমোট কনফিগ-ট্রিগার ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে রিমোট কনফিগার ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { remoteConfig } from "firebase-functions/v1";
export const yourFunctionName = remoteConfig.onUpdate((version, context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.firebase.remoteconfig.update
resource: projects/${PROJECT_ID}
- name: anotherFunction
type: ...
Cloud Storage
A Cloud Storage-triggered function runs when an object is created, archived, or deleted, or when its metadata changes.
স্টোরেজ-ট্রিগার করা ফাংশন লেখার বিষয়ে তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ক্লাউড স্টোরেজ ট্রিগার দেখুন।
ফাংশন সংজ্ঞা (শুধুমাত্র 1st-gen)
import { storage } from "firebase-functions/v1";
export const yourFunctionName = storage.object().onFinalize((object, context) => {
// ...
});
export const yourFunctionName2 = storage.object().onMetadataUpdate((object, context) => {
// ...
});
export const yourFunctionName3 = storage.object().onArchive((object, context) => {
// ...
});
export const yourFunctionName4 = storage.object().onDelete((object, context) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
# STORAGE_BUCKET (project's default bucket) is an auto-populated
# parameter. You can also specify a bucket.
resource: projects/_/buckets/${STORAGE_BUCKET}
- name: anotherFunction
type: ...
নিম্নলিখিত টেবিলটি দেখায় যে কীভাবে সমর্থিত Cloud Storage ইভেন্টের প্রতিটি প্রকারগুলি নির্দিষ্ট করা যায়:
Cloud Functions ইভেন্ট ট্রিগার | eventType | বর্ণনা |
---|---|---|
onFinalize() | google.storage.object.finalize | অবজেক্ট তৈরি করা হয়েছে |
onMetadataUpdate() | google.storage.object.metadataUpdate | অবজেক্ট মেটাডেটা আপডেট হয়েছে |
onArchive() | google.storage.object.archive | বস্তু সংরক্ষণাগারভুক্ত ছিল |
onDelete() | google.storage.object.delete | অবজেক্ট মোছা |
আপনি যদি চান যে ব্যবহারকারীরা আপনার এক্সটেনশন ইনস্টল করার সময় স্টোরেজ বাকেট কনফিগার করতে সক্ষম হন, তাহলে আপনার extension.yaml
ফাইলে একটি নতুন প্যারামিটার যোগ করুন এবং আপনার ফাংশনের resource
ঘোষণায় প্যারামিটারটি উল্লেখ করুন:
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.storage.object.finalize
resource: projects/_/buckets/${YOUR_BUCKET}
- name: anotherFunction
type: ...
params:
- param: YOUR_BUCKET
label: Cloud Storage bucket
description: Which bucket do you want to watch for changes?
type: selectResource
resourceType: storage.googleapis.com/Bucket
default: ${STORAGE_BUCKET} # Specifying a default is optional.
required: true
Test Lab
একটি টেস্ট ল্যাব-ট্রিগারড ফাংশন চলে যখন একটি টেস্ট ম্যাট্রিক্স তার পরীক্ষা শেষ করে।
টেস্ট ল্যাব-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস টেস্ট ল্যাব ট্রিগারগুলি দেখুন৷
ফাংশন সংজ্ঞা (শুধুমাত্র 1 ম-জেন)
import { testLab } from "firebase-functions/v1";
export const yourFunctionName = testLab.testMatrix().onComplete((matrix, context) => {
// ...
});
রিসোর্স ঘোষণা (এক্সটেনশন.ইমল)
resources:
- name: yourFunctionName
type: firebaseextensions.v1beta.function
properties:
eventTrigger:
eventType: google.testing.testMatrix.complete
resource: projects/${PROJECT_ID}/testMatrices/{matrixId}
- name: anotherFunction
type: ...
Crashlytics সতর্কতা ট্রিগার
Crashlytics -triggered ফাংশন চলে যখন Crashlytics একটি সতর্কতা প্রকাশ করে।
সতর্কতা-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস অ্যালার্ট ট্রিগারগুলি দেখুন৷
ফাংশন সংজ্ঞা (কেবল দ্বিতীয়-জেন)
import {
onNewFatalIssuePublished,
onNewNonfatalIssuePublished,
onNewAnrIssuePublished,
onRegressionAlertPublished,
onVelocityAlertPublished,
onStabilityDigestPublished,
} from "firebase-functions/v2/alerts/crashlytics";
export const yourFunctionName = onNewFatalIssuePublished((event) => {
// ...
});
export const yourFunctionName2 = onNewNonfatalIssuePublished((event) => {
// ...
});
export const yourFunctionName3 = onNewAnrIssuePublished((event) => {
// ...
});
export const yourFunctionName4 = onRegressionAlertPublished((event) => {
// ...
});
export const yourFunctionName5 = onVelocityAlertPublished((event) => {
// ...
});
export const yourFunctionName6 = onStabilityDigestPublished((event) => {
// ...
});
রিসোর্স ঘোষণা (এক্সটেনশন.ইমল)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: crashlytics.newFatalIssue
- name: anotherFunction
type: ...
আপনি alerttype
জন্য নিম্নলিখিত মানগুলি ব্যবহার করতে পারেন
-
crashlytics.newFatalIssue
-
crashlytics.newNonfatalIssue
-
crashlytics.regression
-
crashlytics.stabilityDigest
-
crashlytics.velocity
-
crashlytics.newAnrIssue
Performance Monitoring সতর্কতা ট্রিগার
একটি Performance Monitoring -ট্রিগারড ফাংশন চলে যখন Performance Monitoring একটি সতর্কতা প্রকাশ করে।
সতর্কতা-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস অ্যালার্ট ট্রিগারগুলি দেখুন৷
ফাংশনের সংজ্ঞা (শুধুমাত্র ২য়-জেনারেল)
import { onThresholdAlertPublished } from "firebase-functions/v2/alerts/performance";
export const yourFunctionName = onThresholdAlertPublished((event) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: performance.threshold
- name: anotherFunction
type: ...
App Distribution সতর্কতা ট্রিগার
একটি App Distribution -ট্রিগারড ফাংশন চলে যখন App Distribution একটি সতর্কতা প্রকাশ করে।
সতর্কতা-ট্রিগার করা ফাংশন লেখার তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে ফায়ারবেস অ্যালার্ট ট্রিগারগুলি দেখুন৷
ফাংশনের সংজ্ঞা (শুধুমাত্র ২য়-জেনারেল)
import {
onNewTesterIosDevicePublished,
onInAppFeedbackPublished
} from "firebase-functions/v2/alerts/appDistribution";
export const yourFunctionName = onNewTesterIosDevicePublished((event) => {
// ...
});
export const yourFunctionName2 = onInAppFeedbackPublished((event) => {
// ...
});
Resource declaration (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
eventTrigger:
eventType: google.firebase.firebasealerts.alerts.v1.published
triggerRegion: global
eventFilters:
- attribute: alerttype
value: appDistribution.inAppFeedback
- name: anotherFunction
type: ...
You can use the following values for alerttype
-
appDistribution.newTesterIosDevice
-
appDistribution.inAppFeedback
Custom event triggers (Eventarc)
একটি ইভেন্টর্ক-ট্রিগারড ফাংশন চলে যখন একটি নির্দিষ্ট ইভেন্টের ধরন একটি নির্দিষ্ট চ্যানেলে প্রকাশিত হয়।
Eventarc-ট্রিগার করা ফাংশন লেখার বিষয়ে তথ্যের জন্য Cloud Functions ডকুমেন্টেশনে কাস্টম ইভেন্ট ট্রিগার তৈরি এবং পরিচালনা করুন দেখুন।
ব্যবহারকারীদের আপনার এক্সটেনশনে কাস্টম লজিক সন্নিবেশ করার একটি উপায় দিতে আপনি আপনার এক্সটেনশনগুলি থেকে ইভেন্টগুলি প্রকাশ করতে পারেন৷ একটি এক্সটেনশনে বিকাশকারী-সরবরাহিত কাস্টম লজিক ব্যবহার করুন দেখুন।
ফাংশনের সংজ্ঞা (শুধুমাত্র ২য়-জেনারেল)
import { onCustomEventPublished } from "firebase-functions/v2/eventarc";
export const yourFunctionName = onCustomEventPublished((event) => {
// ...
});
সম্পদ ঘোষণা (extension.yaml)
apis:
- apiName: eventarc.googleapis.com
reason: Powers all events and triggers
- apiName: run.googleapis.com
reason: Powers 2nd-gen functions
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
# LOCATION is a user-configured parameter value specified by the user
# during installation.
location: ${param:LOCATION}
buildConfig:
runtime: nodejs16
serviceConfig:
availableMemory: 512M
timeoutSeconds: 60
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/us-central1/channels/firebase
- name: anotherFunction
type: ...
আপনার এক্সটেনশনটি ইনস্টল থাকলে চ্যানেলটি ইতিমধ্যে উপস্থিত থাকতে হবে। উদাহরণস্বরূপ, যদি আপনি চ্যানেল তৈরি করে এমন অন্য এক্সটেনশন থেকে কাস্টম ইভেন্টের উপর নির্ভর করেন, আপনার ব্যবহারকারীদের প্রথমে সেই এক্সটেনশনটি ইনস্টল করার নির্দেশ দিন।
The above example would create a custom event trigger for the "default" Firebase channel in us-central1
region. You can make the channel name and region customizable by using parameters. যেমন:
params:
- param: EVENTARC_CHANNEL_NAME
label: Eventarc channel name
description: What is the name of the Eventarc channel.
default: firebase
type: string
required: true
resources:
- name: yourfunctionname
type: firebaseextensions.v1beta.v2function
properties:
location: ${param:LOCATION}
eventTrigger:
eventType: firebase.extensions.storage-resize-images.v1.complete
channel: projects/${param:PROJECT_ID}/locations/${param:LOCATION}/channels/${param:EVENTARC_CHANNEL_NAME}