১. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি শিখবেন কীভাবে ক্লাউড স্টোরেজ বাকেট ইভেন্টস এবং ইভেন্টআর্ক ব্যবহার করে ইভেন্ট প্রসেসিং শুরু করতে হয়। আপনি ডেটা বিশ্লেষণ এবং ছবি প্রসেস করার জন্য ক্লাউড রান ফাংশন ব্যবহার করবেন। ফাংশনটি গুগলের ভিশন এপিআই ব্যবহার করবে এবং ফলাফলস্বরূপ ছবিটি ক্লাউড স্টোরেজ বাকেটে সংরক্ষণ করবে।

আপনি যা শিখবেন
কীভাবে একটি ইমেজ প্রসেসিং পাইপলাইন তৈরি করবেন।
- স্টোরেজ বাকেট কনফিগার করুন
- ক্লাউড স্টোরেজে অবজেক্ট পড়া এবং লেখার জন্য ক্লাউড রান ফাংশন তৈরি করুন।
- একটি ইভেন্টার্ক ট্রিগার স্থাপন করুন
- খাবারের ছবি শনাক্ত করতে ভিশন এপিআই একীভূত করুন
- এন্ড-টু-এন্ড সলিউশনটি পরীক্ষা ও যাচাই করুন।
পূর্বশর্ত
- এই ল্যাবটি করার জন্য ক্লাউড কনসোল এবং শেল এনভায়রনমেন্ট সম্পর্কে পূর্বজ্ঞান থাকা আবশ্যক।
- ক্লাউড স্টোরেজ, ক্লাউড রান ফাংশন বা ভিশন এপিআই-এর পূর্ব অভিজ্ঞতা থাকলে সহায়ক, তবে তা আবশ্যক নয়।
২. সেটআপ এবং প্রয়োজনীয়তা
ক্লাউড প্রজেক্ট সেটআপ
- Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



- প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
- প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত
PROJECT_IDহিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে। - আপনার অবগতির জন্য জানানো যাচ্ছে যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
- এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড শেল সক্রিয় করুন
সার্চ বারের ডানদিকে থাকা আইকনটিতে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

পরিবেশ সেটআপ
- ক্লাউড শেল টার্মিনালে নিচের কমান্ডগুলো চালিয়ে প্রজেক্ট এবং রিসোর্স-সম্পর্কিত এনভায়রনমেন্ট ভেরিয়েবল তৈরি করুন।
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NAME=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export REGION=us-east1
export UPLOAD_BUCKET_NAME=menu-item-uploads-$PROJECT_ID
export UPLOAD_BUCKET=gs://menu-item-uploads-$PROJECT_ID
export BUCKET_THUMBNAILS=gs://menu-item-thumbnails-$PROJECT_ID
export MENU_SERVICE_NAME=menu-service
export USER_EMAIL=$(gcloud config list account --format "value(core.account)")
- ল্যাবের জন্য প্রয়োজনীয় এপিআইগুলো সক্রিয় করুন।
gcloud services enable \
vision.googleapis.com \
cloudfunctions.googleapis.com \
pubsub.googleapis.com \
cloudbuild.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com \
artifactregistry.googleapis.com \
run.googleapis.com \
--quiet
- রিপোজিটরি ক্লোন করুন
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/cloud-functions
৩. ক্লাউড স্টোরেজ বাকেটগুলি কনফিগার করুন
স্টোরেজ বাকেট তৈরি করুন
আপনার ইমেজ প্রসেসিং পাইপলাইনের জন্য আপলোড এবং থাম্বনেইল ক্লাউড স্টোরেজ বাকেট তৈরি করুন।
gsutil mb কমান্ড এবং একটি অনন্য নাম ব্যবহার করে দুটি বাকেট তৈরি করুন:
- আপলোড বাকেট যেখানে ছবিগুলো প্রথমে আপলোড করা হবে
- তৈরি করা থাম্বনেইল ছবিগুলো সংরক্ষণ করার জন্য থাম্বনেইল বাকেট।
নতুন ছবি আপলোড করার জন্য একটি বাকেট তৈরি করুন:
gsutil mb -p $PROJECT_ID -l $REGION $UPLOAD_BUCKET
উদাহরণ আউটপুট:
Creating gs://menu-item-uploads-cymbal-eats-8399-3119/...
তৈরি করা থাম্বনেইলগুলো সংরক্ষণ করার জন্য একটি বাকেট তৈরি করুন:
gsutil mb -p $PROJECT_ID -l $REGION $BUCKET_THUMBNAILS
উদাহরণ আউটপুট:
Creating gs://menu-item-thumbnails-cymbal-eats-8399-3119/...
বালতির অনুমতি আপডেট করুন
ব্যবহারকারীদের পড়ার অনুমতি দেওয়ার জন্য স্টোরেজ বাকেটের অনুমতি আপডেট করুন।
আপনার বাকেটের অবজেক্টগুলো পড়া ও লেখার অনুমতি দিতে gsutil iam ch কমান্ডটি ব্যবহার করুন:
gsutil iam ch allUsers:objectViewer $UPLOAD_BUCKET
gsutil iam ch allUsers:objectViewer $BUCKET_THUMBNAILS
উদাহরণ আউটপুট
Updated IAM policy for project [cymbal-eats-8399-3119]. [...]
৪. পরিষেবা অ্যাকাউন্টগুলি কনফিগার করুন
থাম্বনেইল প্রসেস করার জন্য ক্লাউড ফাংশনের জন্য একটি কাস্টম সার্ভিস অ্যাকাউন্ট তৈরি করুন:
export CF_SERVICE_ACCOUNT=thumbnail-service-sa
gcloud iam service-accounts create ${CF_SERVICE_ACCOUNT}
আর্টিফ্যাক্ট রেজিস্ট্রি থেকে রিড অপারেশনের অনুমতি দেওয়ার জন্য artifactregistry.reader রোলটি মঞ্জুর করুন:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/artifactregistry.reader"
জেনারেট করা ছবিগুলো থাম্বনেইল বাকেটে সংরক্ষণ করার অনুমতি দিতে storage.objectCreator রোলটি মঞ্জুর করুন:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/storage.objectCreator"
ক্লাউড রান পরিষেবা আহ্বানের অনুমতি দিতে run.invoker রোলটি মঞ্জুর করুন:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/run.invoker"
প্রোভাইডারদের থেকে ইভেন্ট গ্রহণ করার অনুমতি দিতে eventarc.eventReceiver রোলটি মঞ্জুর করুন:
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member "serviceAccount:${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--role "roles/eventarc.eventReceiver"
ক্লাউড স্টোরেজ সার্ভিস অ্যাকাউন্টকে pubsub.publisher রোলটি প্রদান করুন। এর ফলে, বাকেটে ইমেজ আপলোড করা হলে সার্ভিস অ্যাকাউন্টটি ইভেন্ট প্রকাশ করতে পারবে।
GCS_SERVICE_ACCOUNT=$(gsutil kms serviceaccount -p $PROJECT_NUMBER)
gcloud projects add-iam-policy-binding $PROJECT_NUMBER \
--member "serviceAccount:$GCS_SERVICE_ACCOUNT" \
--role "roles/pubsub.publisher"
৫. চিত্র প্রক্রিয়াকরণ কার্যাবলীর সংক্ষিপ্ত বিবরণ
ক্লাউড স্টোরেজ থেকে একটি ছবি ডাউনলোড, সেটির আকার পরিবর্তন এবং ছবিটি আবার ক্লাউড স্টোরেজে আপলোড করার জন্য একটি ফাংশন তৈরি করুন। ফাংশনটি ছবিটিতে একটি বিবরণ লেবেল যুক্ত করার জন্য ভিশন এপিআই (Vision API)-কে কল করবে। ফাংশনটি বিবরণ লেবেলটি যাচাই করবে। যদি লেবেলটি ছবিটিকে "খাবার" (Food) হিসেবে চিহ্নিত করে, তাহলে মেনু আইটেমের ছবি এবং থাম্বনেইল আপডেট করার জন্য মেনু সার্ভিসে একটি ইভেন্ট পাঠানো হবে।

একটি ফাংশন ট্রিগার করা
ক্লাউড স্টোরেজ ফাংশনগুলি ক্লাউড স্টোরেজ থেকে আসা পাব/সাব নোটিফিকেশনের উপর ভিত্তি করে তৈরি এবং একই ধরনের ইভেন্ট টাইপ সমর্থন করে:
এই ল্যাবে, আপনি ক্লাউড স্টোরেজে কোনো অবজেক্ট চূড়ান্ত হলে একটি ফাংশন স্থাপন ও সক্রিয় করবেন।
বস্তু চূড়ান্ত করুন
যখন কোনো ক্লাউড স্টোরেজ অবজেক্টের 'রাইট' সফলভাবে সম্পন্ন হয়, তখন অবজেক্ট ফাইনালাইজ ইভেন্ট ট্রিগার হয়। বিশেষত, এর অর্থ হলো একটি নতুন অবজেক্ট তৈরি করা বা বিদ্যমান কোনো অবজেক্ট ওভাররাইট করা এই ইভেন্টটিকে ট্রিগার করে। আর্কাইভ এবং মেটাডেটা আপডেট অপারেশনগুলো এই ট্রিগারের আওতাভুক্ত নয়।
৬. ক্লাউড স্টোরেজ সংযুক্ত করুন
ক্লাউড স্টোরেজ হলো গুগল ক্লাউডে আপনার অবজেক্টগুলো সংরক্ষণ করার একটি পরিষেবা। অবজেক্ট হলো একটি অপরিবর্তনীয় ডেটা, যা যেকোনো ফরম্যাটের একটি ফাইল নিয়ে গঠিত। আপনি বাকেট নামক কন্টেইনারে অবজেক্টগুলো সংরক্ষণ করেন। সমস্ত বাকেট একটি প্রজেক্টের সাথে যুক্ত থাকে এবং আপনি আপনার প্রজেক্টগুলোকে একটি অর্গানাইজেশনের অধীনে গ্রুপ করতে পারেন। ক্লায়েন্ট লাইব্রেরি এবং এপিআই ক্লাউড স্টোরেজের সাথে ইন্টিগ্রেশনকে সহজ করে তোলে।
এই ল্যাবে, আপনি ক্লায়েন্ট লাইব্রেরি ব্যবহার করে ক্লাউড স্টোরেজে অবজেক্ট পড়বেন এবং লিখবেন।
ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে
অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় ক্লাউড ক্লায়েন্ট লাইব্রেরি পাওয়া যায়। লাইব্রেরিগুলো ব্যবহার শুরু করতে হলে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরিটি ইনস্টল করতে হবে।
ক্লায়েন্ট লাইব্রেরি ব্যবহার করে
বাস্তবায়নের বিস্তারিত বিবরণ মূলত প্রোগ্রামিং ভাষার উপর নির্ভর করে। আপনার অ্যাপ্লিকেশনে ক্লায়েন্ট লাইব্রেরি ব্যবহার করার জন্য, প্রথম ধাপ হলো ক্লাউড স্টোরেজ ডিপেন্ডেন্সিগুলো ইম্পোর্ট করা। উদাহরণস্বরূপ, Node.js প্রজেক্টে, package.json ফাইলে ইম্পোর্টগুলো যোগ করা হয়। নিচের কোড স্নিপেটটিতে এই ল্যাবের package.json ফাইলের নোটিশটি দেখানো হয়েছে।
প্যাকেজ.json
{
"name": "thumbnail-service",
"version": "0.1.0",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0",
"@google-cloud/storage": "^5.18.2",
"@google-cloud/vision": "^2.4.2",
...
}
}
একটি ক্লাউডইভেন্ট কলব্যাক নিবন্ধন করুন
ফাংশনস ফ্রেমওয়ার্কের সাথে একটি ক্লাউডইভেন্ট কলব্যাক রেজিস্টার করুন, যেটি বাকেটে একটি নতুন ইমেজ আপলোড করা হলে ক্লাউড স্টোরেজ দ্বারা ট্রিগার হবে।
index.js
functions.cloudEvent('process-thumbnails', async (cloudEvent) => {
console.log(`Event ID: ${cloudEvent.id}`);
console.log(`Event Type: ${cloudEvent.type}`);
...
একটি স্টোরেজ রেফারেন্স অবজেক্ট তৈরি করা
ক্লায়েন্ট লাইব্রেরিগুলো ইম্পোর্ট করার পরে, আপনাকে একটি নতুন স্টোরেজ ক্লায়েন্ট এবং বাকেট তৈরি করতে হবে, যেগুলোর সাথে আপনার অ্যাপ্লিকেশনটি কাজ করবে।
index.js
const storage = new Storage(); const bucket = storage.bucket(file.bucket); const thumbBucket = storage.bucket(process.env.BUCKET_THUMBNAILS);
ক্লাউড স্টোরেজ অবজেক্ট ডাউনলোড করুন
index.js
await bucket.file(file.name).download({
destination: originalFile
});
ক্লাউড স্টোরেজে অবজেক্ট আপলোড করুন
আপনি তিনভাবে ক্লাউড স্টোরেজে আপলোড অনুরোধ পাঠাতে পারেন: একক-অনুরোধ, রিজিউমেবল অথবা এক্সএমএল এপিআই মাল্টিপার্ট আপলোড। বড় আকারের আপলোড বা স্ট্রিমিং আপলোডের জন্য রিজিউমেবল আপলোড ব্যবহার করুন। এক্সএমএল এপিআই-এর মাধ্যমে ফাইলগুলো খণ্ডে খণ্ডে আপলোড করা হয় এবং পরে একটি একক অবজেক্ট হিসেবে একত্রিত করা হয়। ছোট আকারের অবজেক্টের জন্য একক-অনুরোধ আপলোড ব্যবহার করুন।
নিচের কোডটি একক-অনুরোধ আপলোড ব্যবহার করে ক্লাউড স্টোরেজে একটি ছবি আপলোড করে।
index.js
const thumbnailImage = await thumbBucket.upload(thumbFile);
৭. ভিশন এপিআই একীভূত করুন
ক্লাউড ভিশন ডেভেলপারদের অ্যাপ্লিকেশনগুলিতে সহজেই ভিশন ডিটেকশন ফিচারগুলি ইন্টিগ্রেট করার সুযোগ দেয়, যার মধ্যে রয়েছে ইমেজ লেবেলিং, ফেস ও ল্যান্ডমার্ক ডিটেকশন, অপটিক্যাল ক্যারেক্টার রিকগনিশন (OCR), এবং এক্সপ্লিসিট কন্টেন্টের ট্যাগিং।
ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে
অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় ক্লাউড ক্লায়েন্ট লাইব্রেরি পাওয়া যায়। লাইব্রেরিগুলো ব্যবহার শুরু করতে হলে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরিটি ইনস্টল করতে হবে।
একটি ইমেজ অ্যানোটেটর ক্লায়েন্ট তৈরি করুন
অফিসিয়াল ক্লায়েন্ট SDK ব্যবহার করে গুগল এপিআই অ্যাক্সেস করতে, আপনাকে এপিআই-এর ডিসকভারি ডকুমেন্টের উপর ভিত্তি করে একটি সার্ভিস অবজেক্ট তৈরি করতে হবে, যা SDK-এর কাছে এপিআই-টির বর্ণনা দেয়। আপনার ক্রেডেনশিয়াল ব্যবহার করে ভিশন এপিআই-এর ডিসকভারি সার্ভিস থেকে এটি ফেচ করতে হবে।
index.js
const client = new vision.ImageAnnotatorClient();
একটি ভিশন এপিআই অনুরোধ তৈরি করুন
ভিশন এপিআই আপনার অনুরোধের বডিতে ইমেজ ফাইলের বিষয়বস্তুকে একটি বেস৬৪ এনকোডেড স্ট্রিং হিসেবে পাঠিয়ে ইমেজ ফাইলটির ফিচার ডিটেকশন করতে পারে।
আপনার ছবিতে টীকা যোগ করার জন্য 'images' রিসোর্স ব্যবহার করে একটি অনুরোধ তৈরি করতে, এই API-তে করা অনুরোধটি একটি 'requests' তালিকা সহ একটি অবজেক্টের আকারে হয়। এই তালিকার প্রতিটি আইটেমে দুই ধরনের তথ্য থাকে:
- বেস৬৪-এনকোডেড ছবির ডেটা
- ঐ ছবিটি সম্পর্কে আপনি যে বৈশিষ্ট্যগুলো টীকাযুক্ত করতে চান, তার একটি তালিকা।
index.js
const client = new vision.ImageAnnotatorClient();
const visionRequest = {
image: { source: { imageUri: `gs://${file.bucket}/${file.name}` } },
features: [
{ type: 'LABEL_DETECTION' },
]
};
const visionPromise = client.annotateImage(visionRequest);
৮. ক্লাউড রান ফাংশনগুলো স্থাপন করুন
এই ইমেজ রিসাইজ সার্ভিসটি বৃহত্তর Cymbal Eats সিস্টেমের একটি অংশ। এই অংশে, আপনি শুধু ইমেজ প্রসেসিং ফিচারের সাথে সম্পর্কিত কম্পোনেন্টগুলো ডেপ্লয় করবেন। সম্পূর্ণ ইনস্টলেশনে ইমেজ আপলোড করার জন্য একটি UI এবং প্রাপ্ত মেটাডেটা সংরক্ষণের জন্য একটি ডাউনস্ট্রিম রিকোয়েস্ট অন্তর্ভুক্ত থাকে। এই ল্যাবের অংশ হিসেবে সেই সক্ষমতাগুলো ইনস্টল করা নেই।
ফাংশন ডেপ্লয়মেন্টের সময় নিম্নলিখিত উপাদানগুলো তৈরি করা হবে:
- ক্লাউড রান ফাংশন
- ইভেন্টআর্ক ট্রিগার
- পাব/সাব টপিক এবং সাবস্ক্রিপশন
cloudshell টার্মিনালে, menu-item-uploads-$PROJECT_ID তে একটি ট্রিগার বাকেট সহ Cloud Run ফাংশনগুলি ডিপ্লয় করতে নিচের কমান্ডটি চালান:
সরাসরি ক্লাউড রানে কোনো ক্লাউড রান ফাংশন ডেপ্লয় করতে হলে, আপনাকে প্রথমে ফাংশনটি ডেপ্লয় করতে হবে এবং তারপর সেটির জন্য একটি ট্রিগার তৈরি করতে হবে।
ক্লাউড রান ফাংশনগুলি স্থাপন করুন:
gcloud beta run deploy process-thumbnails \
--source=thumbnail \
--function process-thumbnails \
--region $REGION \
--base-image google-22-full/nodejs20 \
--no-allow-unauthenticated \
--project=$PROJECT_ID \
--service-account="${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com" \
--set-env-vars=BUCKET_THUMBNAILS=$BUCKET_THUMBNAILS,MENU_SERVICE_URL=$MENU_SERVICE_URL \
--max-instances=1 \
--quiet
উদাহরণ আউটপুট:
Done. Service [process-thumbnails] revision [process-thumbnails-00001-abc] has been deployed and is serving 100 percent of traffic. Service URL: https://process-thumbnails-000000000.us-east1.run.app
ট্রিগারটি তৈরি করুন:
gcloud eventarc triggers create process-thumbnails-trigger \
--location=$REGION \
--destination-run-service=process-thumbnails \
--destination-run-region=$REGION \
--event-filters="type=google.cloud.storage.object.v1.finalized" \
--event-filters="bucket=$UPLOAD_BUCKET_NAME" \
--service-account="${CF_SERVICE_ACCOUNT}@${PROJECT_ID}.iam.gserviceaccount.com"
উদাহরণ আউটপুট:
Creating trigger [process-thumbnails-trigger] in project [qwiklabs-gcp-02-53f8532696e1], location [us-east1]...done. WARNING: It may take up to 2 minutes for the new trigger to become active.
অনুমতি সংক্রান্ত সমস্যার কারণে ট্রিগার ডেপ্লয়মেন্ট ব্যর্থ হলে, অনুগ্রহ করে পূর্ববর্তী ধাপের IAM পরিবর্তনগুলো কার্যকর হওয়া পর্যন্ত অপেক্ষা করুন। এতে সাধারণত ১-২ মিনিট সময় লাগে এবং তারপর আবার ডেপ্লয়মেন্টের চেষ্টা করুন।
ত্রুটির আউটপুটের উদাহরণ:
...If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent... [...]
ক্লাউড কনসোলে, ফাংশনটির জন্য তৈরি করা ক্লাউড রান সার্ভিসটি পর্যালোচনা করুন:

ক্লাউড কনসোলে, ফাংশনটির জন্য তৈরি করা ইভেন্টআর্ক ট্রিগারটি পর্যালোচনা করুন:

ক্লাউড কনসোলে, ইভেন্টআর্ক ট্রিগারের জন্য তৈরি করা পাব/সাব টপিক এবং সাবস্ক্রিপশন পর্যালোচনা করুন:


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

- এই ছবিটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
- ফাইলটির নাম পরিবর্তন করে 1.jpg রাখুন
- ক্লাউড স্টোরেজ কনসোল খুলুন
- মেনু-আইটেম-আপলোডস-... বালতিতে ক্লিক করুন
- ফাইল আপলোড করতে ক্লিক করুন
- স্টোরেজ বাকেটে 1.jpg আপলোড করুন
- ক্লাউড কনসোলে, ক্লাউড রান- এ যান।
- প্রসেস-থাম্বেলগুলিতে ক্লিক করুন
- লগ ট্যাবে ক্লিক করুন

- মেনু-আইটেম-থাম্বনেইল-$PROJECT_ID ক্লাউড স্টোরেজ বাকেটে প্রবেশ করুন
- যাচাই করুন যে থাম্বনেইল ছবিটি থাম্বনেইল বাকেটে তৈরি হয়েছে।

খাদ্য-বহির্ভূত ছবি আপলোড করা
ফাংশনটি সঠিকভাবে কাজ করছে কিনা তা যাচাই করার জন্য, আপনাকে এমন একটি ছবি আপলোড করতে হবে যাতে 'খাদ্য' হিসেবে শ্রেণীবদ্ধ করা যায় এমন কোনো বস্তু নেই।

- এই ছবিটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
- ফাইলটির নাম পরিবর্তন করে 2.jpg রাখুন
- ক্লাউড স্টোরেজ কনসোল খুলুন
- মেনু-আইটেম-আপলোডস-... বালতিতে ক্লিক করুন
- ফাইল আপলোড করতে ক্লিক করুন
- স্টোরেজ বাকেটে 2.jpg আপলোড করুন
- ক্লাউড কনসোলে, ক্লাউড রান- এ যান।
- প্রসেস-থাম্বেলগুলিতে ক্লিক করুন
- লগ ট্যাবে ক্লিক করুন

১০. অভিনন্দন!
অভিনন্দন, আপনি ল্যাবটি শেষ করেছেন!
এরপর কী:
Cymbal Eats-এর অন্যান্য কোডল্যাবগুলি অন্বেষণ করুন:
- ইভেন্টার্কের মাধ্যমে ক্লাউড ওয়ার্কফ্লো চালু করা
- ক্লাউড রান থেকে প্রাইভেট ক্লাউডএসকিউএল-এ সংযোগ করা
- ক্লাউড রান থেকে সম্পূর্ণ পরিচালিত ডেটাবেসগুলিতে সংযোগ স্থাপন
- আইডেন্টিটি অ্যাওয়্যার প্রক্সি (IAP) ব্যবহার করে সার্ভারলেস অ্যাপ্লিকেশন সুরক্ষিত করুন
- ক্লাউড শিডিউলারের মাধ্যমে ক্লাউড রান জব চালু করা
- ক্লাউড রানে নিরাপদে স্থাপন করা
- ক্লাউড রান ইনগ্রেস ট্র্যাফিক সুরক্ষিত করা
- GKE অটোপাইলট থেকে ব্যক্তিগত AlloyDB-তে সংযোগ স্থাপন
পরিষ্কার করা
এই টিউটোরিয়ালে ব্যবহৃত রিসোর্সগুলোর জন্য আপনার গুগল ক্লাউড অ্যাকাউন্টে চার্জ হওয়া এড়াতে, হয় রিসোর্সগুলো যে প্রজেক্টে রয়েছে সেটি ডিলিট করে দিন, অথবা প্রজেক্টটি রেখে দিয়ে আলাদা আলাদা রিসোর্সগুলো ডিলিট করে দিন।
প্রকল্পটি মুছে ফেলা হচ্ছে
বিলিং বন্ধ করার সবচেয়ে সহজ উপায় হলো টিউটোরিয়ালের জন্য তৈরি করা প্রজেক্টটি ডিলিট করে দেওয়া।