Eventarc এবং ক্লাউড রান ফাংশন ব্যবহার করে ক্লাউড স্টোরেজ থেকে ইভেন্ট প্রসেসিং ট্রিগার করা

1. ওভারভিউ

এই ল্যাবে, আপনি ইভেন্ট প্রসেসিং ট্রিগার করার জন্য ক্লাউড স্টোরেজ বাকেট ইভেন্ট এবং Eventarc ব্যবহার করতে শিখবেন। আপনি ডেটা বিশ্লেষণ এবং চিত্রগুলি প্রক্রিয়া করতে ক্লাউড রান ফাংশন ব্যবহার করবেন। ফাংশনটি Google এর Vision API ব্যবহার করবে এবং ফলস্বরূপ চিত্রটিকে ক্লাউড স্টোরেজ বালতিতে সংরক্ষণ করবে।

424779013ac38648.png

যা শিখবেন

কিভাবে একটি ইমেজ প্রসেসিং পাইপলাইন তৈরি করবেন।

  • স্টোরেজ বালতি কনফিগার করুন
  • ক্লাউড স্টোরেজে অবজেক্ট পড়তে এবং লিখতে একটি ক্লাউড রান ফাংশন তৈরি করুন
  • একটি Eventarc ট্রিগার স্থাপন করুন
  • খাদ্যের ছবি সনাক্ত করতে ভিশন API একীভূত করুন
  • এন্ড-টু-এন্ড সমাধান পরীক্ষা করুন এবং যাচাই করুন

পূর্বশর্ত

  • এই ল্যাবটি ক্লাউড কনসোল এবং শেল পরিবেশের সাথে পরিচিতি অনুমান করে।
  • পূর্বে ক্লাউড স্টোরেজ, ক্লাউড রান ফাংশন, বা ভিশন API অভিজ্ঞতা সহায়ক কিন্তু প্রয়োজন নেই।

2. সেটআপ এবং প্রয়োজনীয়তা

ক্লাউড প্রজেক্ট সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল সক্রিয় করুন

অনুসন্ধান বারের ডানদিকে আইকনে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

b02c63d9c7632ef8.png

এনভায়রনমেন্ট সেটআপ

  1. ক্লাউড শেল টার্মিনালে নীচের কমান্ডগুলি চালিয়ে একটি প্রকল্প এবং সংস্থান-সম্পর্কিত পরিবেশের ভেরিয়েবল তৈরি করুন।
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)")
  1. ল্যাবের জন্য প্রয়োজনীয় API গুলি সক্ষম করুন৷
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
  1. সংগ্রহস্থল ক্লোন করুন
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/cloud-functions

3. ক্লাউড স্টোরেজ বালতি কনফিগার করুন

স্টোরেজ বালতি তৈরি করুন

আপনার ছবি প্রক্রিয়াকরণ পাইপলাইনের জন্য আপলোড এবং থাম্বনেইল ক্লাউড স্টোরেজ বালতি তৈরি করুন।

দুটি বালতি তৈরি করতে gsutil mb কমান্ড এবং একটি অনন্য নাম ব্যবহার করুন:

  1. আপলোড বালতি যেখানে ছবি প্রথমে আপলোড করা হবে
  2. থাম্বনেইল বালতি জেনারেট করা থাম্বনেইল ছবি সংরক্ষণ করতে

নতুন ছবি আপলোড করতে একটি বালতি তৈরি করুন:

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].
[...]

4. পরিষেবা অ্যাকাউন্ট কনফিগার করুন

থাম্বনেলগুলি প্রক্রিয়া করতে ক্লাউড ফাংশনের জন্য একটি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করুন:

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"

5. ইমেজ প্রসেসিং ফাংশন ওভারভিউ

ক্লাউড স্টোরেজ থেকে একটি ছবি ডাউনলোড করার জন্য একটি ফাংশন তৈরি করুন, ছবির আকার পরিবর্তন করুন এবং ক্লাউড স্টোরেজে ছবিটি আবার আপলোড করুন। চিত্রটিতে একটি বর্ণনা লেবেল বরাদ্দ করতে ফাংশনটি ভিশন API কল করবে। ফাংশন বর্ণনা লেবেল চেক করবে. যদি লেবেল ছবিটিকে "খাদ্য" হিসাবে চিহ্নিত করে তবে মেনু আইটেমের চিত্র এবং থাম্বনেইল আপডেট করার জন্য একটি ইভেন্ট মেনু পরিষেবাতে পাঠানো হবে।

4c3c3b758dba6a9f.png

একটি ফাংশন ট্রিগার

ক্লাউড স্টোরেজ ফাংশনগুলি ক্লাউড স্টোরেজ থেকে পাব/সাব বিজ্ঞপ্তিগুলির উপর ভিত্তি করে এবং অনুরূপ ইভেন্ট প্রকারগুলিকে সমর্থন করে:

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

অবজেক্ট চূড়ান্ত করুন

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

6. ক্লাউড স্টোরেজ সংহত করুন

ক্লাউড স্টোরেজ হল Google ক্লাউডে আপনার বস্তু সংরক্ষণ করার জন্য একটি পরিষেবা। একটি অবজেক্ট হল একটি অপরিবর্তনীয় ডেটার টুকরো যা যেকোনো বিন্যাসের একটি ফাইল নিয়ে গঠিত। আপনি বালতি নামক পাত্রে বস্তু সংরক্ষণ করেন। সমস্ত বালতি একটি প্রকল্পের সাথে যুক্ত, এবং আপনি একটি সংস্থার অধীনে আপনার প্রকল্পগুলিকে গোষ্ঠীভুক্ত করতে পারেন৷ ক্লায়েন্ট লাইব্রেরি এবং APIগুলি ক্লাউড স্টোরেজের সাথে একীভূত হয়৷

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

ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে

ক্লাউড ক্লায়েন্ট লাইব্রেরি অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় পাওয়া যায়। লাইব্রেরি ব্যবহার শুরু করতে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে হবে।

ক্লায়েন্ট লাইব্রেরি ব্যবহার করে

ব্যাপকভাবে বাস্তবায়নের বিবরণ প্রোগ্রামিং ভাষার উপর নির্ভর করে। আপনার অ্যাপ্লিকেশনে ক্লায়েন্ট লাইব্রেরি ব্যবহার করার জন্য, প্রথম ধাপ হল ক্লাউড স্টোরেজ নির্ভরতা আমদানি করা। উদাহরণস্বরূপ, Node.js প্রজেক্টে, প্যাকেজ.json ফাইলে আমদানি যোগ করা হয়। নীচের স্নিপেট এই ল্যাবের package.json ফাইল বিজ্ঞপ্তি দেখায়।

package.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",
        ...
    }
  }

একটি CloudEvent কলব্যাক নিবন্ধন করুন

ফাংশন ফ্রেমওয়ার্কের সাথে একটি ক্লাউড ইভেন্ট কলব্যাক নিবন্ধন করুন যা ক্লাউড স্টোরেজ দ্বারা ট্রিগার হবে যখন একটি নতুন ছবি বালতিতে আপলোড করা হবে৷

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
        });

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

আপনি তিনটি উপায়ে ক্লাউড স্টোরেজে আপলোডের অনুরোধ পাঠাতে পারেন: একক-অনুরোধ, পুনঃসূচনাযোগ্য বা XML API মাল্টিপার্ট আপলোড৷ বড় আপলোড বা স্ট্রিমিং আপলোডের জন্য পুনরায় শুরু করা আপলোডগুলি ব্যবহার করুন৷ XML API ফাইলগুলি অংশে আপলোড করা হয় এবং একক বস্তু হিসাবে একত্রিত হয়। ছোট বস্তুর জন্য, একক-অনুরোধ আপলোড ব্যবহার করুন।

নীচের কোডটি একটি একক-অনুরোধ আপলোড ব্যবহার করে ক্লাউড স্টোরেজে একটি ছবি আপলোড করে৷

index.js

const thumbnailImage = await thumbBucket.upload(thumbFile);

7. ইন্টিগ্রেট ভিশন API

ক্লাউড ভিশন ডেভেলপারদের সহজেই অ্যাপ্লিকেশানগুলির মধ্যে দৃষ্টি সনাক্তকরণ বৈশিষ্ট্যগুলিকে একীভূত করতে দেয়, যার মধ্যে চিত্র লেবেলিং, ফেস এবং ল্যান্ডমার্ক সনাক্তকরণ, অপটিক্যাল ক্যারেক্টার রিকগনিশন (OCR), এবং স্পষ্ট বিষয়বস্তুর ট্যাগিং সহ।

ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে

ক্লাউড ক্লায়েন্ট লাইব্রেরি অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় পাওয়া যায়। লাইব্রেরি ব্যবহার শুরু করতে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে হবে।

একটি ইমেজ অ্যানোটেটর ক্লায়েন্ট তৈরি করুন

অফিসিয়াল ক্লায়েন্ট SDK ব্যবহার করে Google API অ্যাক্সেস করতে, আপনি API-এর আবিষ্কার নথির উপর ভিত্তি করে একটি পরিষেবা অবজেক্ট তৈরি করেন, যা SDK-তে API-কে বর্ণনা করে। আপনার শংসাপত্রগুলি ব্যবহার করে আপনাকে Vision API এর আবিষ্কার পরিষেবা থেকে এটি আনতে হবে।

index.js

const client = new vision.ImageAnnotatorClient();

একটি ভিশন API অনুরোধ তৈরি করুন

ভিশন API আপনার অনুরোধের মূল অংশে একটি বেস64 এনকোডেড স্ট্রিং হিসাবে চিত্র ফাইলের বিষয়বস্তু পাঠিয়ে একটি চিত্র ফাইলে বৈশিষ্ট্য সনাক্তকরণ সম্পাদন করতে পারে।

আপনার ছবি টীকা করার জন্য ইমেজ রিসোর্স ব্যবহার করে একটি অনুরোধ তৈরি করতে। এই API-তে একটি অনুরোধ একটি অনুরোধের তালিকা সহ একটি বস্তুর আকার নেয়। এই তালিকার প্রতিটি আইটেমে তথ্যের দুটি বিট রয়েছে:

  • বেস64-এনকোডেড ইমেজ ডেটা
  • বৈশিষ্ট্যগুলির একটি তালিকা যা আপনি সেই চিত্র সম্পর্কে টীকা করতে চান৷

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);

8. ক্লাউড রান ফাংশন স্থাপন করুন

এই ইমেজ রিসাইজ সার্ভিসটি বৃহত্তর Cymbal Eats সিস্টেমের অংশ। এই বিভাগে, আপনি শুধুমাত্র ইমেজ প্রক্রিয়াকরণ বৈশিষ্ট্য সম্পর্কিত উপাদান স্থাপন করবেন। সম্পূর্ণ ইনস্টলেশনে ইমেজ আপলোড করার জন্য একটি UI এবং ফলস্বরূপ মেটাডেটা সংরক্ষণ করার জন্য একটি ডাউনস্ট্রিম অনুরোধ অন্তর্ভুক্ত করা হয়েছে। সেই ক্ষমতাগুলি এই ল্যাবের অংশ হিসাবে ইনস্টল করা হয় না।

ফাংশন স্থাপনের সময় নিম্নলিখিত উপাদানগুলি তৈরি করা হবে:

  • ক্লাউড রান ফাংশন
  • Eventarc ট্রিগার
  • পাব/সাব বিষয় এবং সদস্যতা

ক্লাউডশেল টার্মিনালে, menu-item-uploads-$PROJECT_ID এ ট্রিগার বাকেট সহ ক্লাউড রান ফাংশন স্থাপন করতে নীচের কমান্ডটি চালান:

একটি ক্লাউড রান ফাংশন সরাসরি ক্লাউড রানে স্থাপন করতে, আপনি প্রথমে ফাংশনটি স্থাপন করবেন এবং তারপর এটির জন্য একটি ট্রিগার তৈরি করবেন।

ক্লাউড রান ফাংশন স্থাপন করুন:

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 পরিবর্তনের জন্য অপেক্ষা করুন। সাধারণত 1-2 মিনিট সময় নেয় এবং তারপর আবার স্থাপনার চেষ্টা করুন।

উদাহরণ ত্রুটি আউটপুট:

...If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent...
[...] 

ক্লাউড কনসোলে, ফাংশনের জন্য তৈরি করা ক্লাউড রান পরিষেবা পর্যালোচনা করুন:

546c5c951cf0f2f.png

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

dec11309016b09ac.png

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

affe089c39ae1465.png

a4c41ede2af300db.png

9. এন্ড-টু-এন্ড সমাধান পরীক্ষা করুন এবং যাচাই করুন

ক্লাউড সঞ্চয়স্থানে একটি নতুন ফটো আপলোড করুন এবং চিত্রগুলি বিশ্লেষণ করার সাথে সাথে পাইপলাইনের অগ্রগতি নিরীক্ষণ করুন৷ আপনি ক্লাউড ফাংশন লগ নিরীক্ষণ করে এন্ড-টু-এন্ড সমাধান পরীক্ষা করবেন।

একটি ছবি আপলোড করা হচ্ছে

ab7b43f876f9c3a9.jpeg

  1. এই ছবিটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
  2. 1.jpg ফাইলটির নাম পরিবর্তন করুন
  3. ক্লাউড স্টোরেজ কনসোল খুলুন
  4. মেনু-আইটেম-আপলোড-... বালতিতে ক্লিক করুন
  5. আপলোড ফাইল ক্লিক করুন
  6. স্টোরেজ বালতিতে 1.jpg আপলোড করুন
  7. ক্লাউড কনসোলে, ক্লাউড রানে নেভিগেট করুন
  8. প্রসেস-থাম্বেলে ক্লিক করুন
  9. LOGS ট্যাবে ক্লিক করুন

fca8e4bafbdf135d.png

  1. মেনু-আইটেম-থাম্বনেল-$PROJECT_ID ক্লাউড স্টোরেজ বাকেট-এ নেভিগেট করুন
  2. থাম্বনেইল বালতিতে থাম্বনেইল ইমেজ তৈরি করা হয়েছে তা যাচাই করুন

1b6dee72a1fde681.png

একটি অ-খাদ্য ছবি আপলোড করা হচ্ছে

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

c76dd525765f66a6.jpeg

  1. এই ছবিটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
  2. 2.jpg ফাইলটির নাম পরিবর্তন করুন
  3. ক্লাউড স্টোরেজ কনসোল খুলুন
  4. মেনু-আইটেম-আপলোড-... বালতিতে ক্লিক করুন
  5. আপলোড ফাইল ক্লিক করুন
  6. স্টোরেজ বালতিতে 2.jpg আপলোড করুন
  7. ক্লাউড কনসোলে, ক্লাউড রানে নেভিগেট করুন
  8. প্রসেস-থাম্বেলে ক্লিক করুন
  9. LOGS ট্যাবে ক্লিক করুন

18b1e30ee78d3955.png

10. অভিনন্দন!

অভিনন্দন, আপনি ল্যাব শেষ!

এরপর কি:

অন্যান্য Cymbal Eats কোডল্যাবগুলি অন্বেষণ করুন:

পরিষ্কার করুন

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় সংস্থানগুলি রয়েছে এমন প্রকল্পটি মুছুন, অথবা প্রকল্পটি রাখুন এবং পৃথক সংস্থানগুলি মুছুন৷

প্রকল্প মুছে ফেলা হচ্ছে

বিলিং দূর করার সবচেয়ে সহজ উপায় হল আপনি টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।

,

1. ওভারভিউ

এই ল্যাবে, আপনি ইভেন্ট প্রসেসিং ট্রিগার করার জন্য ক্লাউড স্টোরেজ বাকেট ইভেন্ট এবং Eventarc ব্যবহার করতে শিখবেন। আপনি ডেটা বিশ্লেষণ এবং চিত্রগুলি প্রক্রিয়া করতে ক্লাউড রান ফাংশন ব্যবহার করবেন। ফাংশনটি Google এর Vision API ব্যবহার করবে এবং ফলস্বরূপ চিত্রটিকে ক্লাউড স্টোরেজ বাকেটের মধ্যে সংরক্ষণ করবে।

424779013ac38648.png

যা শিখবেন

কিভাবে একটি ইমেজ প্রসেসিং পাইপলাইন তৈরি করবেন।

  • স্টোরেজ বালতি কনফিগার করুন
  • ক্লাউড স্টোরেজে অবজেক্ট পড়তে এবং লিখতে একটি ক্লাউড রান ফাংশন তৈরি করুন
  • একটি Eventarc ট্রিগার স্থাপন করুন
  • খাদ্যের ছবি সনাক্ত করতে ভিশন API একীভূত করুন
  • এন্ড-টু-এন্ড সমাধান পরীক্ষা করুন এবং যাচাই করুন

পূর্বশর্ত

  • এই ল্যাবটি ক্লাউড কনসোল এবং শেল পরিবেশের সাথে পরিচিতি অনুমান করে।
  • পূর্বে ক্লাউড স্টোরেজ, ক্লাউড রান ফাংশন, বা ভিশন API অভিজ্ঞতা সহায়ক কিন্তু প্রয়োজন নেই।

2. সেটআপ এবং প্রয়োজনীয়তা

ক্লাউড প্রজেক্ট সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল সক্রিয় করুন

অনুসন্ধান বারের ডানদিকে আইকনে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

b02c63d9c7632ef8.png

এনভায়রনমেন্ট সেটআপ

  1. ক্লাউড শেল টার্মিনালে নীচের কমান্ডগুলি চালিয়ে একটি প্রকল্প এবং সংস্থান-সম্পর্কিত পরিবেশের ভেরিয়েবল তৈরি করুন।
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)")
  1. ল্যাবের জন্য প্রয়োজনীয় API গুলি সক্ষম করুন৷
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
  1. সংগ্রহস্থল ক্লোন করুন
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/cloud-functions

3. ক্লাউড স্টোরেজ বালতি কনফিগার করুন

স্টোরেজ বালতি তৈরি করুন

আপনার ছবি প্রক্রিয়াকরণ পাইপলাইনের জন্য আপলোড এবং থাম্বনেইল ক্লাউড স্টোরেজ বালতি তৈরি করুন।

দুটি বালতি তৈরি করতে gsutil mb কমান্ড এবং একটি অনন্য নাম ব্যবহার করুন:

  1. আপলোড বালতি যেখানে ছবি প্রথমে আপলোড করা হবে
  2. থাম্বনেইল বালতি জেনারেট করা থাম্বনেইল ছবি সংরক্ষণ করতে

নতুন ছবি আপলোড করতে একটি বালতি তৈরি করুন:

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].
[...]

4. পরিষেবা অ্যাকাউন্ট কনফিগার করুন

থাম্বনেলগুলি প্রক্রিয়া করতে ক্লাউড ফাংশনের জন্য একটি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করুন:

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"

5. ইমেজ প্রসেসিং ফাংশন ওভারভিউ

ক্লাউড স্টোরেজ থেকে একটি ছবি ডাউনলোড করার জন্য একটি ফাংশন তৈরি করুন, ছবির আকার পরিবর্তন করুন এবং ক্লাউড স্টোরেজে ছবিটি আবার আপলোড করুন। চিত্রটিতে একটি বর্ণনা লেবেল বরাদ্দ করতে ফাংশনটি ভিশন API কল করবে। ফাংশন বর্ণনা লেবেল চেক করবে. যদি লেবেল ছবিটিকে "খাদ্য" হিসাবে চিহ্নিত করে তবে মেনু আইটেমের চিত্র এবং থাম্বনেইল আপডেট করার জন্য একটি ইভেন্ট মেনু পরিষেবাতে পাঠানো হবে।

4c3c3b758dba6a9f.png

একটি ফাংশন ট্রিগার

ক্লাউড স্টোরেজ ফাংশনগুলি ক্লাউড স্টোরেজ থেকে পাব/সাব বিজ্ঞপ্তিগুলির উপর ভিত্তি করে এবং অনুরূপ ইভেন্ট প্রকারগুলিকে সমর্থন করে:

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

অবজেক্ট চূড়ান্ত করুন

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

6. ক্লাউড স্টোরেজ সংহত করুন

ক্লাউড স্টোরেজ হল Google ক্লাউডে আপনার বস্তু সংরক্ষণ করার জন্য একটি পরিষেবা। একটি অবজেক্ট হল একটি অপরিবর্তনীয় ডেটার টুকরো যা যেকোনো বিন্যাসের একটি ফাইল নিয়ে গঠিত। আপনি বালতি নামক পাত্রে বস্তু সংরক্ষণ করেন। সমস্ত বালতি একটি প্রকল্পের সাথে যুক্ত, এবং আপনি একটি সংস্থার অধীনে আপনার প্রকল্পগুলিকে গোষ্ঠীভুক্ত করতে পারেন৷ ক্লায়েন্ট লাইব্রেরি এবং APIগুলি ক্লাউড স্টোরেজের সাথে একীভূত হয়৷

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

ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে

ক্লাউড ক্লায়েন্ট লাইব্রেরি অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় পাওয়া যায়। লাইব্রেরি ব্যবহার শুরু করতে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে হবে।

ক্লায়েন্ট লাইব্রেরি ব্যবহার করে

বড় আকারে বাস্তবায়নের বিবরণ প্রোগ্রামিং ভাষার উপর নির্ভর করে। আপনার অ্যাপ্লিকেশনে ক্লায়েন্ট লাইব্রেরি ব্যবহার করার জন্য, প্রথম ধাপ হল ক্লাউড স্টোরেজ নির্ভরতা আমদানি করা। উদাহরণস্বরূপ, Node.js প্রজেক্টে, প্যাকেজ.json ফাইলে আমদানি যোগ করা হয়। নীচের স্নিপেট এই ল্যাবের package.json ফাইল বিজ্ঞপ্তি দেখায়।

package.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",
        ...
    }
  }

একটি CloudEvent কলব্যাক নিবন্ধন করুন

ফাংশন ফ্রেমওয়ার্কের সাথে একটি ক্লাউড ইভেন্ট কলব্যাক নিবন্ধন করুন যা ক্লাউড স্টোরেজ দ্বারা ট্রিগার হবে যখন একটি নতুন ছবি বালতিতে আপলোড করা হবে৷

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
        });

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

আপনি তিনটি উপায়ে ক্লাউড স্টোরেজে আপলোডের অনুরোধ পাঠাতে পারেন: একক-অনুরোধ, পুনঃসূচনাযোগ্য বা XML API মাল্টিপার্ট আপলোড৷ বড় আপলোড বা স্ট্রিমিং আপলোডের জন্য পুনরায় শুরু করা আপলোডগুলি ব্যবহার করুন৷ XML API ফাইলগুলি অংশে আপলোড করা হয় এবং একক বস্তু হিসাবে একত্রিত হয়। ছোট বস্তুর জন্য, একক-অনুরোধ আপলোড ব্যবহার করুন।

নীচের কোডটি একটি একক-অনুরোধ আপলোড ব্যবহার করে ক্লাউড স্টোরেজে একটি ছবি আপলোড করে৷

index.js

const thumbnailImage = await thumbBucket.upload(thumbFile);

7. ইন্টিগ্রেট ভিশন API

ক্লাউড ভিশন ডেভেলপারদের সহজেই অ্যাপ্লিকেশানগুলির মধ্যে দৃষ্টি সনাক্তকরণ বৈশিষ্ট্যগুলিকে একীভূত করতে দেয়, যার মধ্যে চিত্র লেবেলিং, ফেস এবং ল্যান্ডমার্ক সনাক্তকরণ, অপটিক্যাল ক্যারেক্টার রিকগনিশন (OCR), এবং স্পষ্ট বিষয়বস্তুর ট্যাগিং সহ।

ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে

ক্লাউড ক্লায়েন্ট লাইব্রেরি অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় পাওয়া যায়। লাইব্রেরি ব্যবহার শুরু করতে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে হবে।

একটি ইমেজ অ্যানোটেটর ক্লায়েন্ট তৈরি করুন

অফিসিয়াল ক্লায়েন্ট SDK ব্যবহার করে Google API অ্যাক্সেস করতে, আপনি API-এর আবিষ্কার নথির উপর ভিত্তি করে একটি পরিষেবা অবজেক্ট তৈরি করেন, যা SDK-তে API-কে বর্ণনা করে। আপনার শংসাপত্রগুলি ব্যবহার করে আপনাকে Vision API এর আবিষ্কার পরিষেবা থেকে এটি আনতে হবে।

index.js

const client = new vision.ImageAnnotatorClient();

একটি ভিশন API অনুরোধ তৈরি করুন

ভিশন API আপনার অনুরোধের মূল অংশে একটি বেস64 এনকোডেড স্ট্রিং হিসাবে চিত্র ফাইলের বিষয়বস্তু পাঠিয়ে একটি চিত্র ফাইলে বৈশিষ্ট্য সনাক্তকরণ সম্পাদন করতে পারে।

আপনার ছবি টীকা করার জন্য ইমেজ রিসোর্স ব্যবহার করে একটি অনুরোধ তৈরি করতে। এই API-তে একটি অনুরোধ একটি অনুরোধের তালিকা সহ একটি বস্তুর আকার নেয়। এই তালিকার প্রতিটি আইটেমে তথ্যের দুটি বিট রয়েছে:

  • বেস64-এনকোডেড ইমেজ ডেটা
  • বৈশিষ্ট্যগুলির একটি তালিকা যা আপনি সেই চিত্র সম্পর্কে টীকা করতে চান৷

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);

8. ক্লাউড রান ফাংশন স্থাপন করুন

এই ইমেজ রিসাইজ সার্ভিসটি বৃহত্তর Cymbal Eats সিস্টেমের অংশ। এই বিভাগে, আপনি শুধুমাত্র ইমেজ প্রক্রিয়াকরণ বৈশিষ্ট্য সম্পর্কিত উপাদান স্থাপন করবেন। সম্পূর্ণ ইনস্টলেশনে ইমেজ আপলোড করার জন্য একটি UI এবং ফলস্বরূপ মেটাডেটা সংরক্ষণ করার জন্য একটি ডাউনস্ট্রিম অনুরোধ অন্তর্ভুক্ত করা হয়েছে। সেই ক্ষমতাগুলি এই ল্যাবের অংশ হিসাবে ইনস্টল করা হয় না।

ফাংশন স্থাপনের সময় নিম্নলিখিত উপাদানগুলি তৈরি করা হবে:

  • ক্লাউড রান ফাংশন
  • Eventarc ট্রিগার
  • পাব/সাব বিষয় এবং সদস্যতা

ক্লাউডশেল টার্মিনালে, menu-item-uploads-$PROJECT_ID এ ট্রিগার বাকেট সহ ক্লাউড রান ফাংশন স্থাপন করতে নীচের কমান্ডটি চালান:

একটি ক্লাউড রান ফাংশন সরাসরি ক্লাউড রানে স্থাপন করতে, আপনি প্রথমে ফাংশনটি স্থাপন করবেন এবং তারপর এটির জন্য একটি ট্রিগার তৈরি করবেন।

ক্লাউড রান ফাংশন স্থাপন করুন:

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 পরিবর্তনের জন্য অপেক্ষা করুন। সাধারণত 1-2 মিনিট সময় নেয় এবং তারপর আবার স্থাপনার চেষ্টা করুন।

উদাহরণ ত্রুটি আউটপুট:

...If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent...
[...] 

ক্লাউড কনসোলে, ফাংশনের জন্য তৈরি করা ক্লাউড রান পরিষেবা পর্যালোচনা করুন:

546c5c951cf0f2f.png

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

dec11309016b09ac.png

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

affe089c39ae1465.png

a4c41ede2af300db.png

9. এন্ড-টু-এন্ড সমাধান পরীক্ষা করুন এবং যাচাই করুন

ক্লাউড সঞ্চয়স্থানে একটি নতুন ফটো আপলোড করুন এবং চিত্রগুলি বিশ্লেষণ করার সাথে সাথে পাইপলাইনের অগ্রগতি নিরীক্ষণ করুন৷ আপনি ক্লাউড ফাংশন লগ নিরীক্ষণ করে এন্ড-টু-এন্ড সমাধান পরীক্ষা করবেন।

একটি ছবি আপলোড করা হচ্ছে

ab7b43f876f9c3a9.jpeg

  1. এই ছবিটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
  2. 1.jpg ফাইলটির নাম পরিবর্তন করুন
  3. ক্লাউড স্টোরেজ কনসোল খুলুন
  4. মেনু-আইটেম-আপলোড-... বালতিতে ক্লিক করুন
  5. আপলোড ফাইল ক্লিক করুন
  6. স্টোরেজ বালতিতে 1.jpg আপলোড করুন
  7. ক্লাউড কনসোলে, ক্লাউড রানে নেভিগেট করুন
  8. প্রসেস-থাম্বেলে ক্লিক করুন
  9. LOGS ট্যাবে ক্লিক করুন

fca8e4bafbdf135d.png

  1. মেনু-আইটেম-থাম্বনেল-$PROJECT_ID ক্লাউড স্টোরেজ বাকেট-এ নেভিগেট করুন
  2. থাম্বনেইল বালতিতে থাম্বনেইল ইমেজ তৈরি করা হয়েছে তা যাচাই করুন

1b6dee72a1fde681.png

একটি অ-খাদ্য ছবি আপলোড করা হচ্ছে

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

c76dd525765f66a6.jpeg

  1. এই ছবিটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
  2. 2.jpg ফাইলটির নাম পরিবর্তন করুন
  3. ক্লাউড স্টোরেজ কনসোল খুলুন
  4. মেনু-আইটেম-আপলোড-... বালতিতে ক্লিক করুন
  5. আপলোড ফাইল ক্লিক করুন
  6. স্টোরেজ বালতিতে 2.jpg আপলোড করুন
  7. ক্লাউড কনসোলে, ক্লাউড রানে নেভিগেট করুন
  8. প্রসেস-থাম্বেলে ক্লিক করুন
  9. LOGS ট্যাবে ক্লিক করুন

18b1e30ee78d3955.png

10. অভিনন্দন!

অভিনন্দন, আপনি ল্যাব শেষ!

এরপর কি:

অন্যান্য Cymbal Eats কোডল্যাবগুলি অন্বেষণ করুন:

পরিষ্কার করুন

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় সংস্থানগুলি রয়েছে এমন প্রকল্পটি মুছুন, অথবা প্রকল্পটি রাখুন এবং পৃথক সংস্থানগুলি মুছুন৷

প্রকল্প মুছে ফেলা হচ্ছে

বিলিং দূর করার সবচেয়ে সহজ উপায় হল আপনি টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।

,

1. ওভারভিউ

এই ল্যাবে, আপনি ইভেন্ট প্রসেসিং ট্রিগার করার জন্য ক্লাউড স্টোরেজ বাকেট ইভেন্ট এবং Eventarc ব্যবহার করতে শিখবেন। আপনি ডেটা বিশ্লেষণ এবং চিত্রগুলি প্রক্রিয়া করতে ক্লাউড রান ফাংশন ব্যবহার করবেন। ফাংশনটি Google এর Vision API ব্যবহার করবে এবং ফলস্বরূপ চিত্রটিকে ক্লাউড স্টোরেজ বাকেটের মধ্যে সংরক্ষণ করবে।

424779013ac38648.png

যা শিখবেন

কিভাবে একটি ইমেজ প্রসেসিং পাইপলাইন তৈরি করবেন।

  • স্টোরেজ বালতি কনফিগার করুন
  • ক্লাউড স্টোরেজে অবজেক্ট পড়তে এবং লিখতে একটি ক্লাউড রান ফাংশন তৈরি করুন
  • একটি Eventarc ট্রিগার স্থাপন করুন
  • খাদ্যের ছবি সনাক্ত করতে ভিশন API একীভূত করুন
  • এন্ড-টু-এন্ড সমাধান পরীক্ষা করুন এবং যাচাই করুন

পূর্বশর্ত

  • এই ল্যাবটি ক্লাউড কনসোল এবং শেল পরিবেশের সাথে পরিচিতি অনুমান করে।
  • পূর্বে ক্লাউড স্টোরেজ, ক্লাউড রান ফাংশন, বা ভিশন API অভিজ্ঞতা সহায়ক কিন্তু প্রয়োজন নেই।

2. সেটআপ এবং প্রয়োজনীয়তা

ক্লাউড প্রজেক্ট সেটআপ

  1. Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি সবসময় এটি আপডেট করতে পারেন.
  • প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রকল্প আইডি উল্লেখ করতে হবে (সাধারণত PROJECT_ID হিসাবে চিহ্নিত)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য একটি এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করতে পারেন, এবং এটি উপলব্ধ কিনা দেখতে পারেন। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকে।
  • আপনার তথ্যের জন্য, একটি তৃতীয় মান আছে, একটি প্রকল্প নম্বর , যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
  1. এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ হবে না, যদি কিছু হয়। এই টিউটোরিয়ালের বাইরে বিলিং এড়াতে সংস্থানগুলি বন্ধ করতে, আপনি আপনার তৈরি করা সংস্থানগুলি মুছতে বা প্রকল্প মুছতে পারেন। নতুন Google ক্লাউড ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷

ক্লাউড শেল সক্রিয় করুন

অনুসন্ধান বারের ডানদিকে আইকনে ক্লিক করে ক্লাউড শেল সক্রিয় করুন।

b02c63d9c7632ef8.png

এনভায়রনমেন্ট সেটআপ

  1. ক্লাউড শেল টার্মিনালে নীচের কমান্ডগুলি চালিয়ে একটি প্রকল্প এবং সংস্থান-সম্পর্কিত পরিবেশের ভেরিয়েবল তৈরি করুন।
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)")
  1. ল্যাবের জন্য প্রয়োজনীয় API গুলি সক্ষম করুন৷
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
  1. সংগ্রহস্থল ক্লোন করুন
git clone https://github.com/GoogleCloudPlatform/cymbal-eats.git && cd cymbal-eats/cloud-functions

3. ক্লাউড স্টোরেজ বালতি কনফিগার করুন

স্টোরেজ বালতি তৈরি করুন

আপনার ছবি প্রক্রিয়াকরণ পাইপলাইনের জন্য আপলোড এবং থাম্বনেইল ক্লাউড স্টোরেজ বালতি তৈরি করুন।

দুটি বালতি তৈরি করতে gsutil mb কমান্ড এবং একটি অনন্য নাম ব্যবহার করুন:

  1. আপলোড বালতি যেখানে ছবি প্রথমে আপলোড করা হবে
  2. থাম্বনেইল বালতি জেনারেট করা থাম্বনেইল ছবি সংরক্ষণ করতে

নতুন ছবি আপলোড করতে একটি বালতি তৈরি করুন:

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].
[...]

4. পরিষেবা অ্যাকাউন্ট কনফিগার করুন

থাম্বনেলগুলি প্রক্রিয়া করতে ক্লাউড ফাংশনের জন্য একটি কাস্টম পরিষেবা অ্যাকাউন্ট তৈরি করুন:

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"

5. ইমেজ প্রসেসিং ফাংশন ওভারভিউ

ক্লাউড স্টোরেজ থেকে একটি ছবি ডাউনলোড করার জন্য একটি ফাংশন তৈরি করুন, ছবির আকার পরিবর্তন করুন এবং ক্লাউড স্টোরেজে ছবিটি আবার আপলোড করুন। চিত্রটিতে একটি বর্ণনা লেবেল বরাদ্দ করতে ফাংশনটি ভিশন API কল করবে। ফাংশন বর্ণনা লেবেল চেক করবে. যদি লেবেল ছবিটিকে "খাদ্য" হিসাবে চিহ্নিত করে তবে মেনু আইটেমের চিত্র এবং থাম্বনেইল আপডেট করার জন্য একটি ইভেন্ট মেনু পরিষেবাতে পাঠানো হবে।

4c3c3b758dba6a9f.png

একটি ফাংশন ট্রিগার

ক্লাউড স্টোরেজ ফাংশনগুলি ক্লাউড স্টোরেজ থেকে পাব/সাব বিজ্ঞপ্তিগুলির উপর ভিত্তি করে এবং অনুরূপ ইভেন্ট প্রকারগুলিকে সমর্থন করে:

এই ল্যাবটিতে, আপনি যখন ক্লাউড স্টোরেজে কোনও অবজেক্ট চূড়ান্ত হয় তখন আপনি কোনও ফাংশন স্থাপন এবং ট্রিগার করবেন।

অবজেক্ট চূড়ান্ত করুন

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

6 .. ক্লাউড স্টোরেজ সংহত করুন

ক্লাউড স্টোরেজ হল Google ক্লাউডে আপনার বস্তু সংরক্ষণ করার জন্য একটি পরিষেবা। একটি অবজেক্ট হল একটি অপরিবর্তনীয় ডেটার টুকরো যা যেকোনো বিন্যাসের একটি ফাইল নিয়ে গঠিত। আপনি বালতি নামক পাত্রে অবজেক্টগুলি সঞ্চয় করেন। সমস্ত বালতি একটি প্রকল্পের সাথে যুক্ত, এবং আপনি একটি সংস্থার অধীনে আপনার প্রকল্পগুলিকে গোষ্ঠীভুক্ত করতে পারেন৷ ক্লায়েন্ট লাইব্রেরি এবং এপিআইগুলি ক্লাউড স্টোরেজের সাথে সংহত করে তোলে

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

ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে

ক্লাউড ক্লায়েন্ট লাইব্রেরিগুলি অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় উপলব্ধ। গ্রন্থাগারগুলি ব্যবহার শুরু করতে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে হবে।

ক্লায়েন্ট লাইব্রেরি ব্যবহার করে

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

package.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);

7 .. একীভূত দৃষ্টি এপিআই

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

ক্লায়েন্ট লাইব্রেরি ইনস্টল করা হচ্ছে

ক্লাউড ক্লায়েন্ট লাইব্রেরিগুলি অনেক জনপ্রিয় প্রোগ্রামিং ভাষায় উপলব্ধ। গ্রন্থাগারগুলি ব্যবহার শুরু করতে আপনাকে অবশ্যই ক্লায়েন্ট লাইব্রেরি ইনস্টল করতে হবে।

একটি চিত্র টীকা ক্লায়েন্ট তৈরি করুন

সরকারী ক্লায়েন্ট এসডিকে ব্যবহার করে গুগল এপিআইগুলিতে অ্যাক্সেস করতে, আপনি এপিআইয়ের আবিষ্কারের নথির উপর ভিত্তি করে একটি পরিষেবা অবজেক্ট তৈরি করেন, যা এসডিকে এপিআইকে বর্ণনা করে। আপনার শংসাপত্রগুলি ব্যবহার করে আপনাকে এটি ভিশন এপিআইয়ের আবিষ্কার পরিষেবা থেকে আনতে হবে।

index.js

const client = new vision.ImageAnnotatorClient();

একটি ভিশন এপিআই অনুরোধ তৈরি করুন

ভিশন এপিআই আপনার অনুরোধের দেহে বেস 64 এনকোডেড স্ট্রিং হিসাবে চিত্র ফাইলের সামগ্রীগুলি প্রেরণ করে কোনও চিত্র ফাইলের উপর বৈশিষ্ট্য সনাক্তকরণ সম্পাদন করতে পারে।

আপনার চিত্রটি টীকা দেওয়ার জন্য চিত্রগুলি সংস্থান ব্যবহার করে একটি অনুরোধ তৈরি করতে। এই এপিআই -তে একটি অনুরোধ একটি অনুরোধ তালিকা সহ কোনও বস্তুর রূপ নেয়। এই তালিকার প্রতিটি আইটেমটিতে দুটি বিট তথ্যের থাকে:

  • বেস 64-এনকোডেড ইমেজ ডেটা
  • আপনি সেই চিত্রটি সম্পর্কে টীকাযুক্ত বৈশিষ্ট্যগুলির একটি তালিকা।

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);

8। ক্লাউড রান ফাংশন স্থাপন করুন

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

ফাংশন মোতায়েনের সময় নিম্নলিখিত উপাদানগুলি তৈরি করা হবে:

  • ক্লাউড রান ফাংশন
  • ইভেন্টার্ক ট্রিগার
  • পাব/সাব বিষয় এবং সাবস্ক্রিপশন

ক্লাউডশেল টার্মিনালে, menu-item-uploads-$PROJECT_ID :

ক্লাউড রান ফাংশনগুলি সরাসরি ক্লাউড রানে স্থাপন করতে, আপনি প্রথমে ফাংশনটি স্থাপন করবেন এবং তারপরে এটির জন্য একটি ট্রিগার তৈরি করবেন।

ক্লাউড রান ফাংশন স্থাপন করুন:

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.

যদি কোনও অনুমতি সমস্যার কারণে ট্রিগার মোতায়েন ব্যর্থ হয় - তবে দয়া করে পূর্ববর্তী পদক্ষেপ থেকে প্রচারের জন্য আইএএম পরিবর্তনের জন্য অপেক্ষা করুন। সাধারণত 1-2 মিনিট সময় নেয় এবং তারপরে আবার মোতায়েনের পুনরায় চেষ্টা করুন।

উদাহরণ ত্রুটি আউটপুট:

...If you recently started to use Eventarc, it may take a few minutes before all necessary permissions are propagated to the Service Agent...
[...] 

ক্লাউড কনসোলে, ক্লাউড রান পরিষেবা পর্যালোচনা করুন যা ফাংশনের জন্য তৈরি করা হয়েছিল:

546C5C951CF0F2F.PNG

ক্লাউড কনসোলে, ফাংশনটির জন্য তৈরি করা হয়েছিল এমন ঘটনা ট্রিগার পর্যালোচনা:

DEC11309016B09AC.PNG

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

Affe089c39ae1465.png

A4C41EDE2AF300DB.PNG

9। শেষ থেকে শেষের সমাধানটি পরীক্ষা করুন এবং বৈধ করুন

ক্লাউড স্টোরেজে একটি নতুন ফটো আপলোড করুন এবং চিত্রগুলি বিশ্লেষণ করার সাথে সাথে পাইপলাইনের অগ্রগতি পর্যবেক্ষণ করুন। আপনি ক্লাউড ফাংশন লগগুলি পর্যবেক্ষণ করে শেষ থেকে শেষ সমাধানটি পরীক্ষা করবেন।

একটি চিত্র আপলোড করা হচ্ছে

AB7B43F876F9C3A9.JPEG

  1. এই চিত্রটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
  2. ফাইলটির নামকরণ করুন 1.jpg
  3. ক্লাউড স্টোরেজ কনসোলটি খুলুন
  4. মেনু-আইটেম-আপলোডস -... বালতিতে ক্লিক করুন
  5. ফাইল আপলোড ক্লিক করুন
  6. স্টোরেজ বালতিতে 1.jpg আপলোড করুন
  7. ক্লাউড কনসোলে, ক্লাউড রান নেভিগেট করুন
  8. প্রক্রিয়া-থাম্বেলগুলিতে ক্লিক করুন
  9. লগস ট্যাবে ক্লিক করুন

fca8e4bafbdf135d.png

  1. মেনু-আইটেম-থম্বনেলস- Project প্রজেক্ট_আইডি ক্লাউড স্টোরেজ বালতিতে নেভিগেট করুন
  2. থাম্বনেইল বালতিতে থাম্বনেইল চিত্রটি তৈরি করা হয়েছে তা যাচাই করুন

1B6DEE72A1FDE681.png

একটি নন-ফুড ইমেজ আপলোড করা হচ্ছে

ফাংশনটি সঠিকভাবে কাজ করে তা যাচাই করতে, আপনি এমন একটি চিত্র আপলোড করবেন যাতে এমন কোনও অবজেক্ট থাকে না যা "খাদ্য" আইটেম হিসাবে শ্রেণিবদ্ধ করা হবে।

C76DD525765F66A6.JPEG

  1. এই চিত্রটি আপনার স্থানীয় মেশিনে সংরক্ষণ করুন
  2. ফাইলটির নামকরণ করুন 2.jpg
  3. ক্লাউড স্টোরেজ কনসোলটি খুলুন
  4. মেনু-আইটেম-আপলোডস -... বালতিতে ক্লিক করুন
  5. ফাইল আপলোড ক্লিক করুন
  6. স্টোরেজ বালতিতে 2.jpg আপলোড করুন
  7. ক্লাউড কনসোলে, ক্লাউড রান নেভিগেট করুন
  8. প্রক্রিয়া-থাম্বেলগুলিতে ক্লিক করুন
  9. লগস ট্যাবে ক্লিক করুন

18B1E30EE78D3955.png

10. অভিনন্দন!

অভিনন্দন, আপনি ল্যাব শেষ করেছেন!

এরপর কি:

অন্যান্য সিম্বল ইটস কোডেল্যাবগুলি অন্বেষণ করুন:

পরিষ্কার করুন

এই টিউটোরিয়ালে ব্যবহৃত সংস্থানগুলির জন্য আপনার Google ক্লাউড অ্যাকাউন্টে চার্জ এড়াতে, হয় সংস্থানগুলি রয়েছে এমন প্রকল্পটি মুছুন, অথবা প্রকল্পটি রাখুন এবং পৃথক সংস্থানগুলি মুছুন৷

প্রকল্প মুছে ফেলা হচ্ছে

বিলিং দূর করার সবচেয়ে সহজ উপায় হল আপনি টিউটোরিয়ালের জন্য তৈরি করা প্রকল্পটি মুছে ফেলা।