1. ভূমিকা

ক্লাউড রান আপনাকে সম্পূর্ণরূপে পরিচালিত পরিবেশে স্টেটলেস কন্টেইনার চালানোর সুযোগ দেয়। এটি ওপেন-সোর্স Knative থেকে তৈরি, যা আপনাকে আপনার কন্টেইনারগুলিকে ক্লাউড রান দিয়ে সম্পূর্ণরূপে পরিচালিত করতে অথবা আপনার Google Kubernetes Engine ক্লাস্টারে ক্লাউড রান ফর অ্যান্থোস দিয়ে চালানোর সুযোগ দেয়।

Eventarc বিভিন্ন পরিষেবা (ক্লাউড রান, ক্লাউড ফাংশন, ওয়ার্কফ্লো) বিভিন্ন উৎস থেকে ইভেন্টের সাথে সংযুক্ত করা সহজ করে তোলে। এটি আপনাকে ইভেন্ট-চালিত আর্কিটেকচার তৈরি করতে দেয় যেখানে মাইক্রোসার্ভিসেসগুলি আলগাভাবে সংযুক্ত এবং বিতরণ করা হয়। এটি আপনার জন্য ইভেন্ট ইনজেশন, ডেলিভারি, সুরক্ষা, অনুমোদন এবং ত্রুটি-পরিচালনারও যত্ন নেয় যা ডেভেলপারদের তত্পরতা এবং অ্যাপ্লিকেশন স্থিতিস্থাপকতা উন্নত করে।
এই কোডল্যাবে, আপনি Eventarc সম্পর্কে শিখবেন। আরও স্পষ্টভাবে বলতে গেলে, আপনি Eventarc এর সাহায্যে Pub/Sub, Cloud Storage এবং Cloud Audit Logs থেকে ইভেন্টগুলি শুনবেন এবং সেগুলি একটি Cloud Run পরিষেবাতে পাঠাবেন।
তুমি কি শিখবে
- ইভেন্টার্কের দৃষ্টিভঙ্গি
- Eventarc-এর ইভেন্টগুলি আবিষ্কার করুন
- একটি ক্লাউড রান সিঙ্ক তৈরি করুন
- পাব/সাবের জন্য একটি ট্রিগার তৈরি করুন
- ক্লাউড স্টোরেজের জন্য একটি ট্রিগার তৈরি করুন
- ক্লাউড অডিট লগের জন্য একটি ট্রিগার তৈরি করুন
- Eventarc UI অন্বেষণ করুন
২. ইভেন্টার্কের দৃষ্টিভঙ্গি
Eventarc-এর লক্ষ্য হল বিভিন্ন Google, Google Cloud এবং তৃতীয় পক্ষের ইভেন্ট উৎস থেকে Google Cloud ইভেন্ট গন্তব্যে ইভেন্ট সরবরাহ করা।

গুগল ক্লাউড সোর্স | ইভেন্ট সোর্স যা গুগল ক্লাউডের মালিকানাধীন পণ্য |
গুগল সূত্র | ইভেন্ট সোর্স যা Google-এর মালিকানাধীন পণ্য যেমন Gmail, Hangouts, Android Management এবং আরও অনেক কিছু |
কাস্টম উৎস | ইভেন্ট সোর্স যা Google-এর মালিকানাধীন পণ্য নয় এবং ব্যবহারকারীরা নিজেরাই তৈরি করেছেন |
তৃতীয় পক্ষের সূত্র | ইভেন্ট সোর্স যা Google-এর মালিকানাধীন নয় বা গ্রাহক-উত্পাদিত নয়। এর মধ্যে রয়েছে Check Point CloudGuard, Datadog, ForgeRock, Lacework ইত্যাদির মতো জনপ্রিয় ইভেন্ট সোর্স যা তৃতীয় পক্ষের সরবরাহকারী এবং অংশীদারদের মালিকানাধীন এবং রক্ষণাবেক্ষণ করা হয়। |
ক্রস-সার্ভিস ইন্টারঅপারেবিলিটির জন্য ইভেন্টগুলিকে ক্লাউডইভেন্টস v1.0 ফর্ম্যাটে স্বাভাবিক করা হয়। ক্লাউডইভেন্টস হল একটি বিক্রেতা-নিরপেক্ষ ওপেন স্পেক যা সাধারণ ফর্ম্যাটে ইভেন্ট ডেটা বর্ণনা করে, যা পরিষেবা, প্ল্যাটফর্ম এবং সিস্টেম জুড়ে ইন্টারঅপারেবিলিটি সক্ষম করে।
৩. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- গুগল ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। যদি আপনার ইতিমধ্যেই একটি জিমেইল বা গুগল ওয়ার্কস্পেস অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।



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

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

এই ভার্চুয়াল মেশিনটিতে আপনার প্রয়োজনীয় সকল ডেভেলপমেন্ট টুল রয়েছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি অফার করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক কর্মক্ষমতা এবং প্রমাণীকরণকে ব্যাপকভাবে উন্নত করে। এই ল্যাবে আপনার সমস্ত কাজ কেবল একটি ব্রাউজার দিয়েই করা যাবে।
শুরু করার আগে
ক্লাউড শেলের ভিতরে, নিশ্চিত করুন যে আপনার প্রোজেক্ট আইডি সেটআপ করা আছে:
PROJECT_ID=your-project-id gcloud config set project $PROJECT_ID
৪. একটি ক্লাউড রান পরিষেবা স্থাপন করুন
ইভেন্টগুলি গ্রহণ করার জন্য একটি ক্লাউড রান পরিষেবা স্থাপন করুন। আপনি ক্লাউড রানের হ্যালো কন্টেইনার স্থাপন করবেন যা ক্লাউডইভেন্টসের বিষয়বস্তু লগ করে।
প্রথমে, ক্লাউড রানের জন্য প্রয়োজনীয় পরিষেবাগুলি সক্ষম করুন:
gcloud services enable run.googleapis.com
ক্লাউড রানে হ্যালো কন্টেইনারটি স্থাপন করুন:
REGION=us-central1 SERVICE_NAME=hello gcloud run deploy $SERVICE_NAME \ --allow-unauthenticated \ --image=gcr.io/cloudrun/hello \ --region=$REGION
সফল হলে, কমান্ড লাইনটি পরিষেবা URL প্রদর্শন করবে। পরিষেবাটি এখন স্থাপন করা হয়েছে কিনা তা পরীক্ষা করার জন্য আপনি যেকোনো ব্রাউজার উইন্ডোতে পরিষেবা URLটি খুলতে পারেন।
৫. ইভেন্ট আবিষ্কার
Eventarc-এ ট্রিগার তৈরি করার আগে, আপনি ইভেন্টের উৎসগুলি কী, তারা কী ধরণের ইভেন্ট নির্গত করতে পারে এবং কীভাবে ট্রিগারগুলিকে ব্যবহার করার জন্য কনফিগার করতে হয় তা আবিষ্কার করতে পারেন।
বিভিন্ন ধরণের ইভেন্টের তালিকা দেখতে:
gcloud beta eventarc attributes types list NAME DESCRIPTION google.cloud.audit.log.v1.written Cloud Audit Log written google.cloud.pubsub.topic.v1.messagePublished Cloud Pub/Sub message published google.cloud.storage.object.v1.archived Cloud Storage: Sent when a live version of an (object versioned) object is archived or deleted. google.cloud.storage.object.v1.deleted Cloud Storage: Sent when an object has been permanently deleted. google.cloud.storage.object.v1.finalized Cloud Storage: Sent when a new object (or a new generation of an existing object). google.cloud.storage.object.v1.metadataUpdated Cloud Storage: Sent when the metadata of an existing object changes.
প্রতিটি ইভেন্টের ধরণ সম্পর্কে আরও তথ্য পেতে:
gcloud beta eventarc attributes types describe google.cloud.audit.log.v1.written attributes: type,serviceName,methodName,resourceName description: 'Cloud Audit Log: Sent when a log is written.' name: google.cloud.audit.log.v1.written
নির্দিষ্ট ধরণের ইভেন্ট নির্গত করে এমন পরিষেবার তালিকা দেখতে:
gcloud beta eventarc attributes service-names list --type=google.cloud.audit.log.v1.written SERVICE_NAME DISPLAY_NAME accessapproval.googleapis.com Access Approval accesscontextmanager.googleapis.com Access Context Manager admin.googleapis.com Google Workspace Admin aiplatform.googleapis.com AI Platform (under Vertex AI) apigee.googleapis.com Apigee apigeeconnect.googleapis.com Apigee Connect ... workflows.googleapis.com Workflows
প্রতিটি পরিষেবা যে পদ্ধতির নাম (সাব-ইভেন্ট) নির্গত করতে পারে তার তালিকা দেখতে:
gcloud beta eventarc attributes method-names list --type=google.cloud.audit.log.v1.written --service-name=workflows.googleapis.com METHOD_NAME google.cloud.workflows.v1.Workflows.CreateWorkflow google.cloud.workflows.v1.Workflows.DeleteWorkflow google.cloud.workflows.v1.Workflows.GetWorkflow google.cloud.workflows.v1.Workflows.ListWorkflows google.cloud.workflows.v1.Workflows.UpdateWorkflow google.cloud.workflows.v1beta.Workflows.CreateWorkflow google.cloud.workflows.v1beta.Workflows.DeleteWorkflow google.cloud.workflows.v1beta.Workflows.GetWorkflow google.cloud.workflows.v1beta.Workflows.ListWorkflows google.cloud.workflows.v1beta.Workflows.UpdateWorkflow
৬. একটি পাব/সাব ট্রিগার তৈরি করুন
ইভেন্ট গ্রহণের একটি উপায় হল ক্লাউড পাব/সাব। যেকোনো অ্যাপ্লিকেশন পাব/সাব-এ বার্তা প্রকাশ করতে পারে এবং এই বার্তাগুলি Eventarc-এর মাধ্যমে ক্লাউড রান-এ সরবরাহ করা যেতে পারে।
সেটআপ
কোনও ট্রিগার তৈরি করার আগে, Eventarc-এর জন্য প্রয়োজনীয় পরিষেবাগুলি সক্ষম করুন:
gcloud services enable eventarc.googleapis.com
ট্রিগার ব্যবহার করার জন্য আপনার একটি পরিষেবা অ্যাকাউন্টও প্রয়োজন। একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন:
SERVICE_ACCOUNT=eventarc-trigger-sa gcloud iam service-accounts create $SERVICE_ACCOUNT
তৈরি করুন
আমাদের মোতায়েন করা ক্লাউড রান পরিষেবাতে পাব/সাব বিষয়ে প্রকাশিত ইভেন্টগুলি ফিল্টার করার জন্য একটি ট্রিগার তৈরি করুন:
TRIGGER_NAME=trigger-pubsub gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
পরীক্ষা
Pub/Sub trigger কভারের নিচে একটি বিষয় তৈরি করে। আসুন এটি খুঁজে বের করি এবং একটি ভেরিয়েবলকে বরাদ্দ করি:
TOPIC_ID=$(gcloud eventarc triggers describe $TRIGGER_NAME --location $REGION --format='value(transport.pubsub.topic)')
এই বিষয়ে একটি বার্তা প্রকাশ করতে gcloud ব্যবহার করুন:
gcloud pubsub topics publish $TOPIC_ID --message="Hello World"
ক্লাউড রান পরিষেবা আগত বার্তার মূল অংশ লগ করে। আপনি এটি আপনার ক্লাউড রান ইনস্ট্যান্সের লগ বিভাগে দেখতে পারেন:

একটি বিদ্যমান পাব/সাব বিষয় দিয়ে তৈরি করুন
ডিফল্টরূপে, যখন আপনি একটি Pub/Sub ট্রিগার তৈরি করেন, তখন Eventarc আপনার অ্যাপ্লিকেশন এবং Cloud Run পরিষেবার মধ্যে পরিবহন বিষয় হিসাবে ব্যবহার করার জন্য কভারের নীচে একটি বিষয় তৈরি করে। এটি সহজেই এবং দ্রুত একটি Pub/Sub সমর্থিত ট্রিগার তৈরি করতে কার্যকর তবে কখনও কখনও আপনি একটি বিদ্যমান বিষয় ব্যবহার করতে চান। Eventarc আপনাকে --transport-topic gcloud পতাকা সহ একই প্রকল্পে একটি বিদ্যমান Pub/Sub বিষয় নির্দিষ্ট করতে দেয়।
এটি কীভাবে কাজ করে তা দেখতে, পরিবহন বিষয় হিসেবে ব্যবহার করার জন্য একটি পাব/সাব বিষয় তৈরি করুন:
TOPIC_ID=eventarc-topic gcloud pubsub topics create $TOPIC_ID
একটি ট্রিগার তৈরি করুন:
TRIGGER_NAME=trigger-pubsub-existing gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --location=$REGION \ --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_ID \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
আপনি এই বিষয়ে একটি বার্তা পাঠিয়ে ট্রিগারটি পরীক্ষা করতে পারেন:
gcloud pubsub topics publish $TOPIC_ID --message="Hello again"
৭. একটি ক্লাউড স্টোরেজ ট্রিগার তৈরি করুন
এই ধাপে, আপনি ক্লাউড স্টোরেজ থেকে ইভেন্ট শোনার জন্য একটি ট্রিগার তৈরি করবেন।
সেটআপ
প্রথমে, ইভেন্টগুলি গ্রহণ করার জন্য একটি বাকেট তৈরি করুন:
BUCKET_NAME=eventarc-gcs-$PROJECT_ID gsutil mb -l $REGION gs://$BUCKET_NAME
eventarc.eventReceiver ভূমিকাটি মঞ্জুর করুন, যাতে পরিষেবা অ্যাকাউন্টটি ক্লাউড স্টোরেজ ট্রিগারে ব্যবহার করা যায়:
gcloud projects add-iam-policy-binding $PROJECT_ID \ --role roles/eventarc.eventReceiver \ --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
ক্লাউড স্টোরেজ ট্রিগারের জন্য আপনাকে ক্লাউড স্টোরেজ পরিষেবা অ্যাকাউন্টে pubsub.publisher ভূমিকাটিও যোগ করতে হবে:
SERVICE_ACCOUNT_STORAGE=$(gsutil kms serviceaccount -p $PROJECT_ID)
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member serviceAccount:$SERVICE_ACCOUNT_STORAGE \
--role roles/pubsub.publisher
তৈরি করুন
বাকেট থেকে আপনার পরিষেবাতে নতুন ফাইল তৈরির ইভেন্টগুলি রুট করার জন্য একটি ট্রিগার তৈরি করুন:
TRIGGER_NAME=trigger-storage gcloud eventarc triggers create $TRIGGER_NAME \ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.storage.object.v1.finalized" \ --event-filters="bucket=$BUCKET_NAME" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
পরীক্ষা
ট্রিগারটি সফলভাবে তৈরি হয়েছে কিনা তা নিশ্চিত করতে সমস্ত ট্রিগার তালিকাভুক্ত করুন:
gcloud eventarc triggers list
ক্লাউড স্টোরেজ বাকেটে একটি ফাইল আপলোড করুন:
echo "Hello World" > random.txt gsutil cp random.txt gs://$BUCKET_NAME/random.txt
যদি আপনি ক্লাউড কনসোলে ক্লাউড রান পরিষেবার লগগুলি পরীক্ষা করেন, তাহলে আপনি প্রাপ্ত ইভেন্টটি দেখতে পাবেন:

৮. একটি ক্লাউড অডিট লগ ট্রিগার তৈরি করুন
যদিও ক্লাউড স্টোরেজ ইভেন্টগুলি শোনার জন্য ক্লাউড স্টোরেজ ট্রিগার হল সবচেয়ে ভালো উপায়, এই ধাপে, আপনি একই কাজ করার জন্য একটি ক্লাউড অডিট লগ ট্রিগার তৈরি করেন।
সেটআপ
কোনও পরিষেবা থেকে ইভেন্টগুলি গ্রহণ করার জন্য, আপনাকে ক্লাউড অডিট লগগুলি সক্ষম করতে হবে। ক্লাউড কনসোল থেকে, উপরের বাম দিকের মেনু থেকে IAM & Admin এবং Audit Logs নির্বাচন করুন। পরিষেবাগুলির তালিকায়, Google Cloud Storage চেক করুন:

ডানদিকে, নিশ্চিত করুন যে Admin , Read এবং Write নির্বাচিত আছে এবং Save ক্লিক করুন:

তৈরি করুন
বাকেট থেকে আপনার পরিষেবাতে নতুন ফাইল তৈরির ইভেন্টগুলি রুট করার জন্য একটি ট্রিগার তৈরি করুন:
TRIGGER_NAME=trigger-auditlog-storage gcloud eventarc triggers create $TRIGGER_NAME\ --destination-run-service=$SERVICE_NAME \ --destination-run-region=$REGION \ --event-filters="type=google.cloud.audit.log.v1.written" \ --event-filters="serviceName=storage.googleapis.com" \ --event-filters="methodName=storage.objects.create" \ --event-filters-path-pattern="resourceName=/projects/_/buckets/$BUCKET_NAME/objects/*" \ --location=$REGION \ --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com
পরীক্ষা
অডিট লগ ট্রিগারগুলি শুরু হতে একটু সময় নেয়। আপনি সমস্ত ট্রিগার তালিকাভুক্ত করে ট্রিগারটি তৈরি হয়েছে কিনা তা পরীক্ষা করতে পারেন:
gcloud eventarc triggers list
তোমার দেখতে হবে যে ACTIVE ক্ষেত্রটি Yes :
NAME TYPE DESTINATION ACTIVE trigger-auditlog-storage google.cloud.audit.log.v1.written Cloud Run service: hello Yes
আগের মতো ক্লাউড স্টোরেজ বাকেটে একই ফাইল আপলোড করুন:
gsutil cp random.txt gs://$BUCKET_NAME/random.txt
যদি আপনি ক্লাউড কনসোলে ক্লাউড রান পরিষেবার লগগুলি পরীক্ষা করেন, তাহলে আপনি প্রাপ্ত ইভেন্টটি দেখতে পাবেন:

৯. Eventarc UI অন্বেষণ করুন
এই ধাপে, আপনি গুগল ক্লাউড কনসোলে Eventarc UI অন্বেষণ করবেন। Eventarc UI তে, আপনি সমস্ত ট্রিগারের একটি ওভারভিউ পেতে পারেন, সেগুলি সম্পাদনা করতে এবং মুছে ফেলতে পারেন এবং গুগল ক্লাউড কনসোল থেকে নতুন ট্রিগার তৈরি করতে পারেন।
গুগল ক্লাউডের Eventarc বিভাগে যান:

আপনি আগে তৈরি করা ট্রিগারগুলির তালিকা দেখতে পাবেন:

আপনি যদি কোনও ট্রিগারে ক্লিক করেন, তাহলে আপনি ট্রিগারের বিশদ বিবরণ দেখতে, সম্পাদনা করতে বা মুছে ফেলতে পারবেন:

আপনি Create trigger নির্বাচন করে এবং ট্রিগারের বিশদ পূরণ করে একটি নতুন ট্রিগার তৈরি করতে পারেন:

১০. অভিনন্দন!
কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।
আমরা যা কভার করেছি
- ইভেন্টার্কের দৃষ্টিভঙ্গি
- Eventarc-এর ইভেন্টগুলি আবিষ্কার করুন
- একটি ক্লাউড রান সিঙ্ক তৈরি করুন
- পাব/সাবের জন্য একটি ট্রিগার তৈরি করুন
- ক্লাউড স্টোরেজের জন্য একটি ট্রিগার তৈরি করুন
- ক্লাউড অডিট লগের জন্য একটি ট্রিগার তৈরি করুন
- Eventarc UI অন্বেষণ করুন