আপনি ক্লাউড স্টোরেজে ফাইল এবং ফোল্ডার আপলোড, আপডেট বা মুছে ফেলার প্রতিক্রিয়া হিসাবে একটি ফাংশন ট্রিগার করতে পারেন।
এই পৃষ্ঠার উদাহরণগুলি একটি নমুনা ফাংশনের উপর ভিত্তি করে যা ক্লাউড স্টোরেজে চিত্র ফাইলগুলি আপলোড করার সময় ট্রিগার করে৷ এই নমুনা ফাংশনটি দেখায় কিভাবে ইভেন্ট অ্যাট্রিবিউট অ্যাক্সেস করতে হয়, কীভাবে একটি ক্লাউড ফাংশন ইনস্ট্যান্সে একটি ফাইল ডাউনলোড করতে হয় এবং ক্লাউড স্টোরেজ ইভেন্টগুলি পরিচালনা করার অন্যান্য মৌলিক বিষয়গুলি।
ব্যবহারের ক্ষেত্রে আরও উদাহরণের জন্য, ক্লাউড ফাংশনগুলির সাথে আমি কী করতে পারি?
ক্লাউড স্টোরেজ পরিবর্তনে একটি ফাংশন ট্রিগার করুন
ক্লাউড স্টোরেজ ইভেন্ট পরিচালনা করে এমন একটি ফাংশন তৈরি করতে functions.storage
ব্যবহার করুন। আপনি একটি নির্দিষ্ট ক্লাউড স্টোরেজ বালতিতে আপনার ফাংশন স্কোপ করতে চান বা ডিফল্ট বালতি ব্যবহার করতে চান কিনা তার উপর নির্ভর করে, নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করুন:
-
functions.storage.object()
ডিফল্ট ক্লাউড স্টোরেজ বালতিতে বস্তুর পরিবর্তন শুনতে। -
functions.storage.bucket('bucketName').object()
একটি নির্দিষ্ট বালতিতে বস্তুর পরিবর্তনের জন্য শুনতে।
উদাহরণস্বরূপ, থাম্বনেইল জেনারেটরের নমুনা প্রকল্পের জন্য ডিফল্ট বালতিতে স্কোপ করা হয়েছে:
exports.firstGenGenerateThumbnail = functions.storage.object().onFinalize(async (object) => { // ... });
ক্লাউড স্টোরেজ এই ইভেন্টগুলিকে সমর্থন করে:
-
onArchive
শুধুমাত্র তখনই পাঠানো হয় যখন একটি বালতি বস্তুর সংস্করণ সক্ষম করে। এই ইভেন্টটি নির্দেশ করে যে একটি বস্তুর লাইভ সংস্করণ একটি সংরক্ষণাগারভুক্ত সংস্করণে পরিণত হয়েছে, কারণ এটি সংরক্ষণাগারভুক্ত ছিল বা একই নামের একটি বস্তুর আপলোড দ্বারা এটি ওভাররাইট করা হয়েছে৷ - একটি বস্তু স্থায়ীভাবে মুছে ফেলা হলে
onDelete
পাঠানো হয়। এর মধ্যে এমন বস্তু অন্তর্ভুক্ত রয়েছে যা ওভাররাইট করা হয়েছে বা বাকেটের জীবনচক্র কনফিগারেশনের অংশ হিসেবে মুছে ফেলা হয়েছে। অবজেক্ট সংস্করণ সক্ষম করা বালতিগুলির জন্য, যখন কোনও বস্তু সংরক্ষণাগারভুক্ত করা হয় তখন এটি পাঠানো হয় না (দেখুনonArchive
), এমনকি সংরক্ষণাগারটিstorage.objects.delete
পদ্ধতির মাধ্যমে ঘটলেও৷ - একটি নতুন অবজেক্ট (অথবা একটি বিদ্যমান বস্তুর একটি নতুন প্রজন্ম) সফলভাবে বালতিতে তৈরি হলে
onFinalize
পাঠানো হয়। এটি একটি বিদ্যমান বস্তু অনুলিপি বা পুনর্লিখন অন্তর্ভুক্ত. একটি ব্যর্থ আপলোড এই ইভেন্ট ট্রিগার না. -
onMetadataUpdate
পাঠানো হয় যখন একটি বিদ্যমান বস্তুর মেটাডেটা পরিবর্তিত হয়।
onFinalize
এর জন্য উপরে দেখানো হিসাবে on
ইভেন্ট হ্যান্ডলারের মধ্যে ইভেন্ট সেট করুন।
ক্লাউড স্টোরেজ অবজেক্ট অ্যাট্রিবিউট অ্যাক্সেস করুন
ক্লাউড ফাংশন আপডেট করা ফাইলের size
এবং contentType
মতো অনেকগুলি ক্লাউড স্টোরেজ অবজেক্টের বৈশিষ্ট্য প্রকাশ করে। যখনই অবজেক্টের মেটাডেটাতে কোনো পরিবর্তন হয় তখন 'মেটাজেনারেশন' অ্যাট্রিবিউট বাড়ানো হয়। নতুন বস্তুর জন্য, metageneration
মান হল 1
।
const fileBucket = object.bucket; // The Storage bucket that contains the file. const filePath = object.name; // File path in the bucket. const contentType = object.contentType; // File content type.
থাম্বনেইল জেনারেশন নমুনা এই বৈশিষ্ট্যগুলির কিছু ব্যবহার করে এক্সিট কেস সনাক্ত করতে যেখানে ফাংশনটি ফিরে আসে:
// Exit if this is triggered on a file that is not an image. if (!contentType.startsWith('image/')) { return functions.logger.log('This is not an image.'); } // Get the file name. const fileName = path.basename(filePath); // Exit if the image is already a thumbnail. if (fileName.startsWith('thumb_')) { return functions.logger.log('Already a Thumbnail.'); }
ডাউনলোড করুন, রূপান্তর করুন এবং একটি ফাইল আপলোড করুন
কিছু ক্ষেত্রে, ক্লাউড স্টোরেজ থেকে ফাইল ডাউনলোড করার প্রয়োজন নাও হতে পারে। যাইহোক, ক্লাউড স্টোরেজে সঞ্চিত একটি ফাইল থেকে থাম্বনেইল ইমেজ তৈরি করার মতো নিবিড় কাজগুলি করতে, আপনাকে ফাংশন ইনস্ট্যান্সে ফাইলগুলি ডাউনলোড করতে হবে-অর্থাৎ, ভার্চুয়াল মেশিন যা আপনার কোড চালায়।
ক্লাউড সঞ্চয়স্থানে বস্তুগুলি সহজেই ডাউনলোড এবং পুনরায় আপলোড করতে, npm install --save @google-cloud/storage
ব্যবহার করে Google ক্লাউড স্টোরেজ প্যাকেজ ইনস্টল করুন এবং এটি আমদানি করুন৷ জাভাস্ক্রিপ্ট ব্যবহার করার জন্য নমুনায় থাম্বনেইল প্রসেসিং কাজগুলির মতো বাহ্যিক প্রক্রিয়াগুলি পরিচালনা করার প্রতিশ্রুতি, child-process-promise
আমদানি করুন:
const functions = require('firebase-functions/v1'); const admin = require('firebase-admin'); admin.initializeApp() const path = require('path'); //library for resizing images const sharp = require('sharp');
আপনার ক্লাউড ফাংশন ইনস্ট্যান্সে একটি অস্থায়ী ডিরেক্টরিতে একটি ফাইল ডাউনলোড করতে gcs.bucket.file(filePath).download
ব্যবহার করুন। এই অবস্থানে, আপনি প্রয়োজন অনুসারে ফাইলটি প্রক্রিয়া করতে পারেন এবং তারপরে ক্লাউড স্টোরেজে আপলোড করতে পারেন। অ্যাসিঙ্ক্রোনাস কাজ সম্পাদন করার সময়, নিশ্চিত করুন যে আপনি আপনার কলব্যাকে একটি জাভাস্ক্রিপ্ট প্রতিশ্রুতি ফেরত দিয়েছেন।
উদাহরণ: চিত্র রূপান্তর
sharp
এর মতো ইমেজ-প্রসেসিং প্রোগ্রামের সাথে একসাথে ক্লাউড ফাংশন ব্যবহার করে, আপনি গ্রাফিকাল ইমেজ ফাইলে ম্যানিপুলেশন করতে পারেন। একটি আপলোড করা ইমেজ ফাইলের জন্য একটি থাম্বনেইল ইমেজ কিভাবে তৈরি করতে হয় তার একটি উদাহরণ নিচে দেওয়া হল:
// Download file from bucket. const bucket = admin.storage().bucket(fileBucket); const metadata = { contentType: contentType, }; const downloadResponse = await bucket.file(filePath).download(); const imageBuffer = downloadResponse[0]; functions.logger.log("Image downloaded!"); // Generate a thumbnail using sharp. const thumbnailBuffer = await sharp(imageBuffer).resize({ width: 200, height: 200, withoutEnlargement: true, }).toBuffer(); functions.logger.log("Thumbnail created"); // Upload the thumbnail with a 'thumb_' prefix. const thumbFileName = `thumb_${fileName}`; const thumbFilePath = path.join(path.dirname(filePath), thumbFileName); await bucket.file(thumbFilePath).save(thumbnailBuffer, { metadata: metadata, }); return functions.logger.log("Thumbnail uploaded!");
এই কোডটি একটি অস্থায়ী ডিরেক্টরিতে সংরক্ষিত ছবির জন্য একটি 200x200 থাম্বনেইল তৈরি করে, তারপর এটিকে ক্লাউড স্টোরেজে আবার আপলোড করে।
আরো উদাহরণ অন্বেষণ
ট্রান্সকোডিং ইমেজ , কন্টেন্ট মডারেট করা , EXIF মেটাডেটা এক্সট্র্যাক্ট করা সহ সাধারণ মিডিয়া ট্রান্সফরমেশন ফাংশনের আরও উদাহরণ। উদাহরণগুলির সম্পূর্ণ তালিকা GitHub এ উপলব্ধ।