ইভেন্ট-চালিত ক্লাউড রান ফাংশন দিয়ে শুরু করা

1. ভূমিকা

ওভারভিউ

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

ক্লাউড রান ফাংশনগুলির সাথে, আমরা ক্লাউড রান সোর্স স্থাপনের সাধারণ UX প্রদান করি, যা ডেভেলপারদের ক্লাউড রান কনফিগারেশন ব্যবহার করে তাদের কাজের চাপের উপর সম্পূর্ণ নিয়ন্ত্রণ দেয়।

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

এই কোডল্যাব নীচের উদাহরণগুলিতে নোডজ নমুনা ব্যবহার করে। যাইহোক, আপনি আপনার পছন্দের ভাষায় ক্লাউড ফাংশন 2nd জেনার কোড নমুনা ব্যবহার করতে পারেন:

আপনি কি শিখবেন

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

2. এনভায়রনমেন্ট ভেরিয়েবল সেটআপ করুন এবং এপিআই সক্ষম করুন

gcloud CLI আপডেট করুন

এই কোডল্যাবের জন্য ইনস্টল করা gcloud CLI-এর একটি সাম্প্রতিক সংস্করণ প্রয়োজন। আপনি চালানোর মাধ্যমে CLI আপডেট করতে পারেন

gcloud components update

এপিআই সক্ষম করুন

আপনি এই কোডল্যাব ব্যবহার শুরু করার আগে, আপনাকে সক্রিয় করতে হবে এমন বেশ কয়েকটি API আছে। এই কোডল্যাবের জন্য নিম্নলিখিত API ব্যবহার করা প্রয়োজন। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে সেই APIগুলি সক্ষম করতে পারেন:

gcloud services enable run.googleapis.com \
    cloudbuild.googleapis.com \
    storage.googleapis.com \
    artifactregistry.googleapis.com

পরিবেশ ভেরিয়েবল সেটআপ করুন

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

PROJECT_ID=<YOUR_PROJECT_ID>
REGION=<YOUR_REGION, e.g. us-central1>

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-event-codelab
BUCKET_NAME=$PROJECT_ID-$SERVICE_NAME
TRIGGER_NAME=$SERVICE_NAME-trigger

3. একটি স্টোরেজ বাকেট এবং একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন৷

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

আপনি নিম্নলিখিত কমান্ডটি চালিয়ে একটি ক্লাউড স্টোরেজ বালতি তৈরি করতে পারেন:

gsutil mb -l us-central1 gs://$BUCKET_NAME

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন

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

প্রথমে, পরিষেবা অ্যাকাউন্ট তৈরি করুন।

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

SERVICE_ACCOUNT="cloud-run-functions"
SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

gcloud iam service-accounts create $SERVICE_ACCOUNT \
  --display-name="Cloud Run functions Eventarc service account"

এর পরে, আপনার Eventarc ট্রিগারের সাথে সম্পর্কিত পরিষেবা অ্যাকাউন্টে প্রকল্পে Eventarc ইভেন্ট রিসিভার ভূমিকা (roles/eventarc.eventReceiver) প্রদান করুন যাতে ট্রিগার ইভেন্ট প্রদানকারীদের থেকে ইভেন্টগুলি গ্রহণ করতে পারে।

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role=roles/eventarc.eventReceiver

তারপর, পরিষেবা অ্যাকাউন্টটিকে ক্লাউড রান ইনভোকার ভূমিকা মঞ্জুর করুন যাতে এটি ফাংশনটি শুরু করতে পারে৷

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role=roles/run.invoker

4. ফাংশন তৈরি করুন এবং স্থাপন করুন

প্রথমে, সেই ডিরেক্টরিতে সোর্স কোড এবং সিডির জন্য একটি ডিরেক্টরি তৈরি করুন।

mkdir ../$SERVICE_NAME && cd $_

তারপর, নিম্নলিখিত বিষয়বস্তু সহ একটি package.json ফাইল তৈরি করুন:

{
    "dependencies": {
        "@google-cloud/functions-framework": "^3.0.0"
    }
}

এরপরে, নিম্নলিখিত বিষয়বস্তু সহ একটি index.js ফাইল তৈরি করুন:

const functions = require("@google-cloud/functions-framework");

// Register a CloudEvent callback with the Functions Framework that will
// be triggered by Cloud Storage.
functions.cloudEvent("helloGCS", (cloudEvent) => {
    console.log(`Event ID: ${cloudEvent.id}`);
    console.log(`Event Type: ${cloudEvent.type}`);

    const file = cloudEvent.data;
    console.log(`Bucket: ${file.bucket}`);
    console.log(`File: ${file.name}`);
    console.log(`Metageneration: ${file.metageneration}`);
    console.log(`Created: ${file.timeCreated}`);
    console.log(`Updated: ${file.updated}`);
});

এখন আপনি নিম্নলিখিত কমান্ডটি চালিয়ে ক্লাউড রান ফাংশন স্থাপন করতে পারেন:

gcloud beta run deploy $SERVICE_NAME \
 --source . \
      --function helloGCS \
      --region $REGION \
      --no-allow-unauthenticated

নিম্নলিখিত নোট করুন:

  • -সোর্স ফ্ল্যাগটি ক্লাউড রানকে ফাংশনটিকে একটি চালানযোগ্য কন্টেইনার ভিত্তিক পরিষেবাতে তৈরি করতে বলার জন্য ব্যবহৃত হয়
  • -ফাংশন ফ্ল্যাগ (নতুন) নতুন পরিষেবার এন্ট্রিপয়েন্ট সেট করতে ব্যবহৃত হয় যাতে আপনি যে ফাংশন স্বাক্ষর করতে চান
  • (ঐচ্ছিক) আপনার ফাংশনকে সর্বজনীনভাবে আবেদন করা থেকে বিরত রাখতে -নো-অনুমতি-অপ্রমাণিত

আপনি নিম্নলিখিত কমান্ডটি চালিয়ে আপনার নতুন পরিষেবা crf-nodejs-event দেখতে পারেন:

gcloud beta run services describe $SERVICE_NAME

5. ইভেন্ট তৈরি করুন

Google ক্লাউড স্টোরেজে যখনই কোনো বস্তু চূড়ান্ত করা হয় তখন আমরা আমাদের ফাংশনে বার্তা পাঠাতে একটি Eventarc ট্রিগার তৈরি করতে পারি:

BUCKET_REGION=$REGION

gcloud eventarc triggers create $TRIGGER_NAME \
     --location=$REGION \
     --destination-run-service=crf-nodejs-event \
  --destination-run-region=$BUCKET_REGION \
     --event-filters="type=google.cloud.storage.object.v1.finalized" \
     --event-filters="bucket=$BUCKET_NAME" \
     --service-account=$SERVICE_ACCOUNT_ADDRESS

নিম্নলিখিত নোট করুন:

  • gcs-function-trigger হল ট্রিগারের নাম
  • crf-nodejs-event হল ক্লাউড রান পরিষেবার নাম যেখানে আমাদের ফাংশন স্থাপন করা হয়
  • -ইভেন্ট-ফিল্টার পতাকার জন্য, আপনার বালতির নামে gs:// উপসর্গ ব্যবহার করবেন না।

Eventarc ব্যবহার করে ক্লাউড স্টোরেজ থেকে ট্রিগার পরিষেবা সেট আপ করার একটি বিশদ টিউটোরিয়াল এখানে ক্লাউড রান ডকুমেন্টেশনে পাওয়া যাবে: https://cloud.google.com/run/docs/tutorials/eventarc

6. ফাংশন পরীক্ষা করুন

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

# get the Service URL
SERVICE_URL="$(gcloud run services describe crf-nodejs-event --region us-central1 --format 'value(status.url)')"

# invoke the service
curl -H "Authorization: bearer $(gcloud auth print-identity-token)" -X GET $SERVICE_URL

আমাদের ফাংশন স্থাপন করা হয়েছে এবং একটি ট্রিগার তৈরি করা হয়েছে, আমরা এখন ফাংশনটি চালু করতে প্রস্তুত।

একটি ফাইল তৈরি করুন এবং এটি আপনার ক্লাউড স্টোরেজ বালতিতে আপলোড করুন৷ আপনি ক্লাউড কনসোল ওয়েব ইন্টারফেসের মাধ্যমে বা gsutil CLI টুল ব্যবহার করে এটি করতে পারেন, যেমন

echo "hello world" > test.txt
gsutil cp test gs://$BUCKET_NAME

ফাইলটি সফলভাবে আপলোড হলে, একটি ইভেন্ট তৈরি হবে এবং আপনার ফাংশনটি বস্তু সম্পর্কে কিছু প্রাথমিক তথ্য যেমন ফাইলের নাম প্রিন্ট করবে। আপনি ক্লাউড কনসোলে ফাংশনের জন্য লগ এন্ট্রিগুলিতে এই আউটপুটটি খুঁজে পেতে পারেন। বিকল্পভাবে, আপনি gcloud CLI ব্যবহার করে এই আউটপুটের জন্য প্রশ্ন করতে পারেন:

gcloud logging read "resource.labels.service_name=crf-nodejs-event AND textPayload: File" --format=json 

এবং আপনি নিম্নলিখিত আউটপুট দেখতে হবে

"textPayload": "File: test.txt"

7. অভিনন্দন!

কোডল্যাব সম্পূর্ণ করার জন্য অভিনন্দন!

আমরা ক্লাউড রান ফাংশনগুলির জন্য ডকুমেন্টেশন পর্যালোচনা করার পরামর্শ দিই

আমরা কভার করেছি কি

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

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

অসাবধানতাবশত চার্জ এড়াতে, (উদাহরণস্বরূপ, যদি এই ক্লাউড রান পরিষেবাটি আপনার মাসিক ক্লাউড রান ইনভোকমেন্ট বরাদ্দের চেয়ে বিনামূল্যের স্তরে অজান্তেই বেশি বার আহ্বান করা হয়), আপনি হয় ক্লাউড রান পরিষেবাটি মুছে ফেলতে পারেন বা ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি মুছে ফেলতে পারেন৷

ক্লাউড রান পরিষেবাগুলি মুছতে, https://console.cloud.google.com/run/- এ ক্লাউড রান ক্লাউড কনসোলে যান এবং এই কোডল্যাবে আপনার তৈরি করা crf-event-codelab পরিষেবা মুছুন৷

আপনি যদি সম্পূর্ণ প্রকল্প মুছে ফেলার সিদ্ধান্ত নেন, আপনি https://console.cloud.google.com/cloud-resource-manager- এ যেতে পারেন, ধাপ 2-এ আপনার তৈরি করা প্রকল্পটি নির্বাচন করুন এবং মুছুন নির্বাচন করুন৷ আপনি যদি প্রকল্পটি মুছে ফেলেন, তাহলে আপনাকে আপনার ক্লাউড SDK-এ প্রকল্পগুলি পরিবর্তন করতে হবে৷ আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রকল্পের তালিকা দেখতে পারেন।