ক্লাউড স্টোরেজ ট্রিগার করে

আপনি ক্লাউড স্টোরেজে ফাইল এবং ফোল্ডার আপলোড, আপডেট বা মুছে ফেলার প্রতিক্রিয়া হিসাবে একটি ফাংশন ট্রিগার করতে পারেন।

এই পৃষ্ঠার উদাহরণগুলি একটি নমুনা ফাংশনের উপর ভিত্তি করে তৈরি করা হয় যা ইমেজ ফাইলগুলি ক্লাউড স্টোরেজে আপলোড করার সময় ট্রিগার করে। এই নমুনা ফাংশনটি দেখায় কিভাবে ইভেন্টের বৈশিষ্ট্যগুলি অ্যাক্সেস করতে হয়, ক্লাউড ফাংশনগুলির উদাহরণে কীভাবে একটি ফাইল ডাউনলোড করতে হয় এবং ক্লাউড স্টোরেজ ইভেন্টগুলি পরিচালনা করার অন্যান্য মৌলিক বিষয়গুলি।

ব্যবহারের ক্ষেত্রে আরো উদাহরণের জন্য, দেখুন আমি মেঘ কার্যাবলী সঙ্গে কী করতে পারি?

ক্লাউড স্টোরেজ পরিবর্তনের একটি ফাংশন ট্রিগার করুন

ব্যবহার করুন functions.storage যে হ্যান্ডলগুলি ক্লাউড স্টোরেজ ঘটনা একটি ফাংশন তৈরি করুন। আপনি একটি নির্দিষ্ট ক্লাউড স্টোরেজ বালতিতে আপনার ফাংশনকে স্কোপ করতে চান বা ডিফল্ট বালতি ব্যবহার করতে চান তার উপর নির্ভর করে, নিম্নলিখিতগুলির মধ্যে একটি ব্যবহার করুন:

  • functions.storage.object() ডিফল্ট ক্লাউড স্টোরেজ বালতি উপর বস্তু পরিবর্তন নিরিক্ষণ করতে দেয়।
  • functions.storage.bucket('bucketName').object() একটি নির্দিষ্ট বালতি উপর বস্তু পরিবর্তন নিরিক্ষণ করতে দেয়।

উদাহরণস্বরূপ, থাম্বনেইল জেনারেটরের নমুনাটি প্রকল্পের জন্য ডিফল্ট বালতিতে রাখা হয়েছে:

exports.generateThumbnail = functions.storage.object().onFinalize(async (object) => {
  // ...
});

ক্লাউড স্টোরেজ এই ইভেন্টগুলিকে সমর্থন করে:

  • onArchive শুধু পাঠানো যখন একটি বালতি সক্ষম করেছে বস্তুর ভার্সন । এই ইভেন্টটি ইঙ্গিত করে যে একটি বস্তুর লাইভ সংস্করণ একটি আর্কাইভ করা সংস্করণে পরিণত হয়েছে, কারণ এটি সংরক্ষণাগারভুক্ত ছিল অথবা এটি একই নামের একটি বস্তুর আপলোডের কারণে ওভাররাইট করা হয়েছিল।
  • onDelete পাঠানো যখন একটি বস্তু স্থায়ীভাবে মুছে ফেলা হয়েছে। এই যে বস্তু ওভাররাইট বা বালতি এর অংশ হিসেবে মুছে ফেলা হয় অন্তর্ভুক্ত জীবনচক্র কনফিগারেশন । সঙ্গে বাকেট জন্য বস্তু সংস্করণ সক্ষম থাকে তবে এই পাঠানো যখন একটি বস্তু (দেখুন সংরক্ষন করা হয় করা হয় onArchive ), এমনকি যদি মহাফেজখানায় মাধ্যমে ঘটে storage.objects.delete পদ্ধতি।
  • onFinalize পাঠানো একটি নতুন বস্তু (অথবা একটি বিদ্যমান বস্তুর নতুন প্রজন্মের) সফলভাবে বালতি তৈরি হয়। এর মধ্যে বিদ্যমান বস্তুর অনুলিপি বা পুনর্লিখন অন্তর্ভুক্ত রয়েছে। একটি ব্যর্থ আপলোড এই ইভেন্টটিকে ট্রিগার করে না।
  • onMetadataUpdate প্রেরণ করেছিলাম একটি বিদ্যমান বস্তুর পরিবর্তনের মেটাডাটা।

মধ্যে ঘটনা সেট on হিসাবে উপরে দেখানো ইভেন্ট হ্যান্ডলার onFinalize

ক্লাউড স্টোরেজ অবজেক্ট অ্যাট্রিবিউট অ্যাক্সেস করুন

ক্লাউড কার্যাবলী ক্লাউড স্টোরেজ বস্তুর একটি সংখ্যা যেমন বৈশিষ্ট্যাবলী অনাবৃত size এবং contentType আপডেট ফাইলের জন্য। 'Metageneration' অ্যাট্রিবিউট বৃদ্ধি যখনই সেখানে বস্তুর মেটাডাটা করার জন্য একটি পরিবর্তন করা হয়। নতুন অবজেক্টের জন্য, 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.
const metageneration = object.metageneration; // Number of times metadata has been generated. New objects have a value of 1.

থাম্বনেইল প্রজন্মের নমুনা এই বৈশিষ্ট্যগুলির কিছু ব্যবহার করে প্রস্থান ক্ষেত্রে সনাক্ত করতে যেখানে ফাংশনটি ফিরে আসে:

// 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.');
}

একটি ফাইল ডাউনলোড করুন, রূপান্তর করুন এবং আপলোড করুন

কিছু ক্ষেত্রে, ক্লাউড স্টোরেজ থেকে ফাইল ডাউনলোড করার প্রয়োজন নাও হতে পারে। যাইহোক, ক্লাউড স্টোরেজে সংরক্ষিত একটি ফাইল থেকে একটি থাম্বনেইল ইমেজ তৈরি করার মতো নিবিড় কাজগুলি সম্পাদন করার জন্য, আপনাকে ফাংশনগুলির উদাহরণে ফাইলগুলি ডাউনলোড করতে হবে - অর্থাৎ আপনার কোড চালানো ভার্চুয়াল মেশিন।

ক্লাউড স্টোরেজ সহজে ডাউনলোড করুন পুনরায় আপলোড বস্তু, ইনস্টল Google মেঘ সংগ্রহস্থল প্যাকেজ ব্যবহার npm install --save @google-cloud/storage , এবং এটি আমদানি করুন। নমুনা থাম্বনেল প্রক্রিয়াকরণ টাস্ক, আমদানি মত বাহ্যিক প্রসেস হ্যান্ডেল করতে জাভাস্ক্রিপ্ট প্রতিশ্রুতি ব্যবহার করার জন্য child-process-promise :

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp()
const spawn = require('child-process-promise').spawn;
const path = require('path');
const os = require('os');
const fs = require('fs');

ব্যবহারের gcs.bucket.file(filePath).download আপনার ক্লাউড কার্যাবলী উদাহরণস্বরূপ উপর অস্থায়ী ডাইরেক্টরি করার জন্য একটি ফাইল ডাউনলোড করতে। এই অবস্থানে, আপনি ফাইলটি প্রয়োজন অনুযায়ী প্রক্রিয়া করতে পারেন এবং তারপর ক্লাউড স্টোরেজে আপলোড করতে পারেন। অ্যাসিঙ্ক্রোনাস কাজ সম্পাদন করার সময়, নিশ্চিত করুন যে আপনি আপনার কলব্যাকে একটি জাভাস্ক্রিপ্ট প্রতিশ্রুতি প্রদান করেছেন।

উদাহরণ: চিত্র রূপান্তর

ক্লাউড কার্যাবলী নামক একটি চিত্র প্রক্রিয়াকরণ প্রোগ্রাম ImageMagick যে গ্রাফিক্যাল চিত্র ফাইলগুলি উপর হেরফেরের সম্পাদন করতে পারবেন। আপলোড করা ইমেজ ফাইলের জন্য একটি থাম্বনেইল ইমেজ কিভাবে তৈরি করা যায় তার একটি উদাহরণ নিচে দেওয়া হল:

// Download file from bucket.
const bucket = admin.storage().bucket(fileBucket);
const tempFilePath = path.join(os.tmpdir(), fileName);
const metadata = {
  contentType: contentType,
};
await bucket.file(filePath).download({destination: tempFilePath});
functions.logger.log('Image downloaded locally to', tempFilePath);
// Generate a thumbnail using ImageMagick.
await spawn('convert', [tempFilePath, '-thumbnail', '200x200>', tempFilePath]);
functions.logger.log('Thumbnail created at', tempFilePath);
// We add a 'thumb_' prefix to thumbnails file name. That's where we'll upload the thumbnail.
const thumbFileName = `thumb_${fileName}`;
const thumbFilePath = path.join(path.dirname(filePath), thumbFileName);
// Uploading the thumbnail.
await bucket.upload(tempFilePath, {
  destination: thumbFilePath,
  metadata: metadata,
});
// Once the thumbnail has been uploaded delete the local file to free up disk space.
return fs.unlinkSync(tempFilePath);

এই কোড executes ImageMagick কমান্ড লাইন প্রোগ্রাম convert ইমেজ অস্থায়ী ডাইরেক্টরি সংরক্ষিত একটি 200x200 থাম্বনেল তৈরি করার জন্য, তাহলে এটি ফিরে ক্লাউড স্টোরেজ আপলোড করে।

আরও উদাহরণ দেখুন

সহ সাধারণ মিডিয়া রূপান্তর ফাংশন আরো উদাহরণ ইমেজ ট্রান্সকোডিং , বিষয়বস্তু নিয়ন্ত্রণ , এক্জিফ মেটাডেটা আহরণেরউদাহরণ সম্পূর্ণ তালিকা GitHub থেকে পাওয়া যায়।

সম্পূর্ণ Google ক্লাউড স্টোরেজ ট্রিগার দেখুন ডকুমেন্টেশন দেখুন।