Eventarc এবং Workflows এর সাথে একটি ইভেন্ট-চালিত অর্কেস্ট্রেশন তৈরি করুন

1. ভূমিকা

cb762f29e9183a3f.png1c05e3d0c2bd2b45.pnga03f943ca09ac4c.png

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

ওয়ার্কফ্লোস হল একটি সম্পূর্ণ-পরিচালিত অর্কেস্ট্রেশন প্ল্যাটফর্ম যা আপনার সংজ্ঞায়িত ক্রমে পরিষেবাগুলি সম্পাদন করে: একটি ওয়ার্কফ্লো৷ এই ওয়ার্কফ্লোগুলি ক্লাউড রান বা ক্লাউড ফাংশনগুলিতে হোস্ট করা পরিষেবাগুলি, ক্লাউড ভিশন AI এবং BigQuery এর মতো Google ক্লাউড পরিষেবাগুলি এবং যে কোনও HTTP-ভিত্তিক APIকে একত্রিত করতে পারে৷

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

শেষ পর্যন্ত, আপনি চিত্রগুলি প্রক্রিয়া করার জন্য একটি নমনীয় অথচ কাঠামোগত সার্ভারহীন আর্কিটেকচারের সাথে শেষ করবেন।

e372ceed8c26c5fb.png

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

  • Eventarc এবং কর্মপ্রবাহের একটি ওভারভিউ
  • ক্লাউড ফাংশন পরিষেবাগুলি কীভাবে স্থাপন করবেন
  • ওয়ার্কফ্লো ব্যবহার করে কীভাবে পরিষেবাগুলি অর্কেস্ট্রেট করবেন৷
  • ইভেন্টর্কের সাথে ক্লাউড স্টোরেজ ইভেন্টগুলিতে কীভাবে ওয়ার্কফ্লোগুলি সাড়া দেওয়া যায়

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

স্ব-গতিসম্পন্ন পরিবেশ সেটআপ

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

ক্লাউড শেল শুরু করুন

যদিও Google ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালিত হতে পারে, এই কোডল্যাবে আপনি Google ক্লাউড শেল ব্যবহার করবেন, একটি কমান্ড লাইন পরিবেশ যা ক্লাউডে চলছে।

Google ক্লাউড কনসোল থেকে, উপরের ডানদিকে টুলবারে ক্লাউড শেল আইকনে ক্লিক করুন:

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

gCloud সেট আপ করুন

ক্লাউড শেল-এ, আপনার প্রজেক্ট আইডি এবং যে অঞ্চলে আপনি আপনার অ্যাপ্লিকেশন স্থাপন করতে চান সেটি সেট করুন। সেগুলিকে PROJECT_ID এবং REGION ভেরিয়েবল হিসাবে সংরক্ষণ করুন৷ উপলব্ধ অঞ্চলগুলির জন্য ক্লাউড ফাংশন অবস্থানগুলি দেখুন৷

PROJECT_ID=your-project-id
gcloud config set project $PROJECT_ID

সোর্স কোড পান

অ্যাপ্লিকেশনটির সোর্স কোড ইভেন্টর্ক-স্যাম্পল রেপোর processing-pipelines ফোল্ডারে রয়েছে।

রেপো ক্লোন করুন:

git clone https://github.com/GoogleCloudPlatform/eventarc-samples.git

eventarc-samples/processing-pipelines ফোল্ডারে নেভিগেট করুন:

cd eventarc-samples/processing-pipelines

3. আর্কিটেকচার ওভারভিউ

অ্যাপ্লিকেশনটির আর্কিটেকচারটি নিম্নরূপ:

6aa6fbc7721dd6b6.png

  1. একটি ছবি একটি ইনপুট বালতিতে সংরক্ষণ করা হয় যা একটি ক্লাউড স্টোরেজ তৈরি ইভেন্ট তৈরি করে।
  2. ক্লাউড স্টোরেজ ক্রিয়েট ইভেন্টটি Eventarc একটি ক্লাউড স্টোরেজ ট্রিগারের মাধ্যমে পড়ে এবং ক্লাউড ইভেন্ট হিসেবে ওয়ার্কফ্লোতে পাঠানো হয়।
  3. কর্মপ্রবাহের প্রথম ধাপে, ফিল্টার , একটি ক্লাউড ফাংশন পরিষেবা, ছবিটি নিরাপদ কিনা তা নির্ধারণ করতে Vision API ব্যবহার করে। ইমেজ নিরাপদ হলে, ওয়ার্কফ্লো পরবর্তী ধাপে চলতে থাকে।
  4. কর্মপ্রবাহের দ্বিতীয় ধাপে, লেবেলার , একটি ক্লাউড ফাংশন পরিষেবা, ভিশন API দিয়ে ছবির লেবেলগুলি বের করে এবং আউটপুট বাকেটে লেবেলগুলি সংরক্ষণ করে৷
  5. তৃতীয় ধাপে, Resizer , আরেকটি ক্লাউড ফাংশন পরিষেবা, ImageSharp ব্যবহার করে ছবির আকার পরিবর্তন করে এবং আউটপুট বালতিতে রিসাইজ করা ছবি সংরক্ষণ করে।
  6. শেষ ধাপে, ওয়াটারমার্কার , আরেকটি ক্লাউড ফাংশন পরিষেবা, লেবেলার থেকে ইমেজশার্প ব্যবহার করে রিসাইজ করা ছবিতে লেবেলের একটি ওয়াটারমার্ক যোগ করে এবং আউটপুট বালতিতে ছবিটি সংরক্ষণ করে।

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

4. বালতি তৈরি করুন

ব্যবহারকারীদের ছবি আপলোড করার জন্য একটি ইনপুট বালতি তৈরি করুন এবং প্রক্রিয়াকৃত ছবিগুলি সংরক্ষণ করার জন্য চিত্র প্রক্রিয়াকরণ পাইপলাইনের জন্য একটি আউটপুট বালতি তৈরি করুন৷

ক্লাউড শেল এ নিম্নলিখিত চালান:

REGION=us-central1
BUCKET1=$PROJECT_ID-images-input
BUCKET2=$PROJECT_ID-images-output

gsutil mb -l $REGION gs://$BUCKET1
gsutil mb -l $REGION gs://$BUCKET2

5. ফিল্টার পরিষেবা স্থাপন করুন

প্রথম পরিষেবা স্থাপন করে শুরু করা যাক। এই ক্লাউড ফাংশন পরিষেবাটি বালতি এবং ফাইলের তথ্য গ্রহণ করে, ভিশন API এর মাধ্যমে ছবিটি নিরাপদ কিনা তা নির্ধারণ করে এবং ফলাফল প্রদান করে।

প্রথমে, ক্লাউড ফাংশন gen2 এবং ভিশন API-এর জন্য প্রয়োজনীয় পরিষেবাগুলি সক্ষম করুন:

gcloud services enable \
  artifactregistry.googleapis.com \
  cloudbuild.googleapis.com \
  cloudfunctions.googleapis.com \
  run.googleapis.com \
  vision.googleapis.com

শীর্ষ স্তরের processing-pipelines ফোল্ডারের ভিতরে, পরিষেবা স্থাপন করুন:

SERVICE_NAME=filter

gcloud functions deploy $SERVICE_NAME \
  --gen2 \
  --allow-unauthenticated \
  --runtime dotnet3 \
  --trigger-http \
  --region=$REGION \
  --entry-point Filter.Function \
  --set-build-env-vars GOOGLE_BUILDABLE=image-v3/filter/csharp

একবার ফাংশনটি স্থাপন করা হলে, একটি ভেরিয়েবলে পরিষেবা URL সেট করুন, আমাদের পরে এটির প্রয়োজন হবে:

FILTER_URL=$(gcloud functions describe $SERVICE_NAME --region=$REGION --gen2 --format 'value(serviceConfig.uri)')

6. লেবেলার পরিষেবা স্থাপন করুন

দ্বিতীয় ক্লাউড ফাংশন পরিষেবাটি বালতি এবং ফাইলের তথ্য গ্রহণ করে, ভিশন API দিয়ে চিত্রের লেবেলগুলি বের করে এবং আউটপুট বালতিতে লেবেলগুলি সংরক্ষণ করে৷

শীর্ষ স্তরের processing-pipelines ফোল্ডারের ভিতরে, পরিষেবা স্থাপন করুন:

SERVICE_NAME=labeler

gcloud functions deploy $SERVICE_NAME \
  --gen2 \
  --allow-unauthenticated \
  --runtime dotnet3 \
  --trigger-http \
  --region=$REGION \
  --set-env-vars BUCKET=$BUCKET2 \
  --entry-point Labeler.Function \
  --set-build-env-vars GOOGLE_BUILDABLE=image-v2/labeler/csharp

একবার ফাংশনটি স্থাপন করা হলে, একটি ভেরিয়েবলে পরিষেবা URL সেট করুন, আমাদের পরে এটির প্রয়োজন হবে:

LABELER_URL=$(gcloud functions describe $SERVICE_NAME --region=$REGION --gen2 --format 'value(serviceConfig.uri)')

7. রিসাইজার পরিষেবা স্থাপন করুন

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

শীর্ষ স্তরের processing-pipelines ফোল্ডারের ভিতরে, পরিষেবা স্থাপন করুন:

SERVICE_NAME=resizer

gcloud functions deploy $SERVICE_NAME \
  --gen2 \
  --allow-unauthenticated \
  --runtime dotnet3 \
  --trigger-http \
  --region=$REGION \
  --set-env-vars BUCKET=$BUCKET2 \
  --entry-point Resizer.Function \
  --set-build-env-vars GOOGLE_BUILDABLE=image-v2/resizer/csharp \
  --timeout=120s

রিসাইজার ফাংশন প্রক্রিয়াকরণের জন্য অতিরিক্ত সময় দেওয়ার জন্য 2 মিনিটের timeout মানটি নোট করুন।

একবার ফাংশনটি স্থাপন করা হলে, একটি ভেরিয়েবলে পরিষেবা URL সেট করুন, আমাদের পরে এটির প্রয়োজন হবে:

RESIZER_URL=$(gcloud functions describe $SERVICE_NAME --region=$REGION --gen2 --format 'value(serviceConfig.uri)')

8. ওয়াটারমার্কার পরিষেবা স্থাপন করুন

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

শীর্ষ স্তরের processing-pipelines ফোল্ডারের ভিতরে, পরিষেবা স্থাপন করুন:

SERVICE_NAME=watermarker

gcloud functions deploy $SERVICE_NAME \
  --gen2 \
  --allow-unauthenticated \
  --runtime dotnet3 \
  --trigger-http \
  --region=$REGION \
  --set-env-vars BUCKET=$BUCKET2 \
  --entry-point Watermarker.Function \
  --set-build-env-vars GOOGLE_BUILDABLE=image-v2/watermarker/csharp

একবার ফাংশনটি স্থাপন করা হলে, একটি ভেরিয়েবলে পরিষেবা URL সেট করুন, আমাদের পরে এটির প্রয়োজন হবে:

WATERMARKER_URL=$(gcloud functions describe $SERVICE_NAME --region=$REGION --gen2 --format 'value(serviceConfig.uri)')

এই মুহুর্তে, সমস্ত চারটি ক্লাউড ফাংশন স্থাপন করা এবং চলমান করা উচিত:

76a218568982c90c.png

9. ওয়ার্কফ্লো সংজ্ঞায়িত করুন এবং স্থাপন করুন

একটি ওয়ার্কফ্লোতে ফিল্টার, লেবেলার, রিসাইজার এবং ওয়াটারমার্কার পরিষেবাগুলিকে একত্রিত করতে ওয়ার্কফ্লো ব্যবহার করুন৷ ওয়ার্কফ্লোগুলি এই পরিষেবাগুলিকে ক্রমানুসারে এবং আমরা সংজ্ঞায়িত পরামিতিগুলির সাথে কল করার অর্কেস্ট্রেট করবে৷

প্রথমে, ওয়ার্কফ্লোগুলির জন্য প্রয়োজনীয় পরিষেবাগুলি সক্ষম করুন:

gcloud services enable \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

সংজ্ঞায়িত করুন

ওয়ার্কফ্লোস একটি প্যারামিটার হিসাবে একটি CloudEvent গ্রহণ করে। আমরা একটি ট্রিগার তৈরি করার পরে এটি Eventarc থেকে আসবে। প্রথম দুটি ধাপে, ওয়ার্কফ্লোস ইভেন্টটি লগ করে এবং ইভেন্ট থেকে বালতি এবং ফাইলের তথ্য বের করে:

main:
  params: [event]
  steps:
  - log_event:
      call: sys.log
      args:
          text: ${event}
          severity: INFO
  - extract_bucket_and_file:
      assign:
      - bucket: ${event.data.bucket}
      - file: ${event.data.name}

filter ধাপে, ওয়ার্কফ্লোস ফিল্টার পরিষেবাতে একটি কল করে যা আমরা আগে স্থাপন করেছি। এটি তারপর লগ এবং ফাইল নিরাপত্তা পরীক্ষা করে:

  - filter:
      call: http.post
      args:
        url: FILTER_URL # TODO: Replace
        auth:
          type: OIDC
        body:
            bucket: ${bucket}
            file: ${file}
      result: filterResponse
  - log_safety:
      call: sys.log
      args:
          text: ${filterResponse.body.safe}
          severity: INFO
  - check_safety:
      switch:
        - condition: ${filterResponse.body.safe == true}
          next: label
      next: end

label ধাপে, ওয়ার্কফ্লোস লেবেলার পরিষেবাতে একটি কল করে এবং প্রতিক্রিয়া ক্যাপচার করে (শীর্ষ 3টি লেবেল):

  - label:
      call: http.post
      args:
        url: LABELER_URL # TODO: Replace
        auth:
          type: OIDC
        body:
            bucket: ${bucket}
            file: ${file}
      result: labelResponse

resize ধাপে, ওয়ার্কফ্লোস রিসাইজার পরিষেবাতে একটি কল করে এবং প্রতিক্রিয়া ক্যাপচার করে (পুনরাকার করা ছবির বালতি এবং ফাইল):

  - resize:
      call: http.post
      args:
        url: RESIZER_URL # TODO: Replace
        auth:
          type: OIDC
        body:
            bucket: ${bucket}
            file: ${file}
      result: resizeResponse

watermark ধাপে, ওয়ার্কফ্লোস রিসাইজ করা ইমেজ এবং লেবেল সহ ওয়াটারমার্কার পরিষেবাকে কল করে এবং ফলাফল ক্যাপচার করে (আকারের আকার এবং ওয়াটারমার্ক করা ছবি):

  - watermark:
      call: http.post
      args:
        url: WATERMARKER_URL # TODO: Replace
        auth:
          type: OIDC
        body:
            bucket: ${resizeResponse.body.bucket}
            file: ${resizeResponse.body.file}
            labels: ${labelResponse.body.labels}
      result: watermarkResponse

final ধাপে, ওয়ার্কফ্লোস লেবেলার, রিসাইজার এবং ওয়াটারমার্কার পরিষেবা থেকে HTTP স্ট্যাটাস কোড ফেরত দেয়:

  - final:
      return:
        label: ${labelResponse.code}
        resize: ${resizeResponse.code}
        watermark: ${watermarkResponse.code}

স্থাপন করুন

ওয়ার্কফ্লো স্থাপন করার আগে, নিশ্চিত করুন যে পরিষেবা URLগুলি ম্যানুয়ালি বা sed ব্যবহার করে স্থাপন করা ফাংশনগুলির url দিয়ে প্রতিস্থাপিত হয়েছে:

শীর্ষ স্তরের processing-pipelines ফোল্ডারের ভিতরে, image-v3 ফোল্ডারে নেভিগেট করুন যেখানে workflows.yaml ফাইলটি অবস্থিত:

cd image-v3/

স্থাপন করা পরিষেবাগুলির প্রকৃত URLগুলির সাথে স্থানধারক URLগুলি প্রতিস্থাপন করতে sed ​​চালান:

sed -i -e "s|FILTER_URL|${FILTER_URL}|" workflow.yaml
sed -i -e "s|LABELER_URL|${LABELER_URL}|" workflow.yaml
sed -i -e "s|RESIZER_URL|${RESIZER_URL}|" workflow.yaml
sed -i -e "s|WATERMARKER_URL|${WATERMARKER_URL}|" workflow.yaml

কর্মপ্রবাহ স্থাপন করুন:

WORKFLOW_NAME=image-processing

gcloud workflows deploy $WORKFLOW_NAME \
    --source=workflow.yaml \
    --location=$REGION

কয়েক সেকেন্ডের মধ্যে, আপনি কনসোলে স্থাপন করা কর্মপ্রবাহ দেখতে পাবেন:

92cf4e758bdc3dde.png

10. ট্রিগার তৈরি করুন

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

ওয়ান টাইম সেটআপ

প্রথমে, Eventarc-এর জন্য প্রয়োজনীয় পরিষেবাগুলি সক্ষম করুন:

gcloud services enable \
 eventarc.googleapis.com

একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন যা আপনি Eventarc ট্রিগারে ব্যবহার করবেন।

SERVICE_ACCOUNT=eventarc-trigger-imageproc-sa

gcloud iam service-accounts create $SERVICE_ACCOUNT \
  --display-name="Eventarc trigger image processing service account"

workflows.invoker ভূমিকা মঞ্জুর করুন, যাতে Eventarc থেকে ওয়ার্কফ্লো শুরু করতে পরিষেবা অ্যাকাউন্ট ব্যবহার করা যেতে পারে:

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --role roles/workflows.invoker \
  --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

eventarc.eventReceiver ভূমিকা মঞ্জুর করুন, o পরিষেবা অ্যাকাউন্ট ব্যবহার করা যেতে পারে a

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

gcloud projects add-iam-policy-binding $PROJECT_ID \
  --role roles/eventarc.eventReceiver \
  --member serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

ক্লাউড স্টোরেজ পরিষেবা অ্যাকাউন্টে pubsub.publisher ভূমিকা মঞ্জুর করুন৷ Eventarc এর ক্লাউড স্টোরেজ ট্রিগারের জন্য এটি প্রয়োজন:

STORAGE_SERVICE_ACCOUNT="$(gsutil kms serviceaccount -p $PROJECT_ID)"

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$STORAGE_SERVICE_ACCOUNT \
    --role roles/pubsub.publisher

তৈরি করুন

একটি ট্রিগার তৈরি করতে নিম্নলিখিত চালান। এই ট্রিগারটি ইনপুট ক্লাউড স্টোরেজ বালতি থেকে নতুন ফাইল তৈরির ইভেন্টগুলির জন্য ফিল্টার করে এবং সেগুলিকে আমরা আগে সংজ্ঞায়িত ওয়ার্কফ্লোতে পাঠায়:

TRIGGER_NAME=trigger-image-processing

gcloud eventarc triggers create $TRIGGER_NAME \
  --location=$REGION \
  --destination-workflow=$WORKFLOW_NAME \
  --destination-workflow-location=$REGION \
  --event-filters="type=google.cloud.storage.object.v1.finalized" \
  --event-filters="bucket=$BUCKET1" \
  --service-account=$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com

আপনি দেখতে পাচ্ছেন যে ক্লাউড কনসোলের Eventarc বিভাগে ট্রিগার তৈরি এবং প্রস্তুত:

14330c4fa2451bc0.png

11. পাইপলাইন পরীক্ষা করুন

চিত্র প্রক্রিয়াকরণ পাইপলাইন ক্লাউড স্টোরেজ থেকে ইভেন্টগুলি গ্রহণ করার জন্য প্রস্তুত৷ পাইপলাইন পরীক্ষা করতে, ইনপুট বালতিতে একটি চিত্র আপলোড করুন:

gsutil cp beach.jpg gs://$BUCKET1

আপনি ছবি আপলোড করার সাথে সাথে, আপনি সক্রিয় অবস্থায় একটি ওয়ার্কফ্লো এক্সিকিউশন দেখতে পাবেন:

36d07cb63c39e7d9.png

এক মিনিট বা তার পরে, আপনার মৃত্যুদন্ড সফল হয়েছে দেখতে হবে। আপনি কর্মপ্রবাহের ইনপুট এবং আউটপুট দেখতে পারেন:

229200c79d989c25.png

আপনি যদি আউটপুট বাকেটের বিষয়বস্তু তালিকাভুক্ত করেন, তাহলে আপনাকে পুনরায় আকার দেওয়া চিত্র, পুনরায় আকার দেওয়া এবং জলছাপ করা চিত্র এবং চিত্রটির লেবেল দেখতে হবে:

gsutil ls gs://$BUCKET2

gs://$PROJECT_ID-images-output/beach-400x400-watermark.jpeg
gs://$PROJECT_ID-images-output/beach-400x400.png
gs://$PROJECT_ID-images-output/beach-labels.txt

দুবার চেক করতে, আপনি ফলাফল দেখতে পুনরায় আকার এবং জলছাপ করা চিত্রটি খুলতে পারেন:

75f3c0019ca842ce.jpeg

12. অভিনন্দন

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

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

  • Eventarc এবং কর্মপ্রবাহের একটি ওভারভিউ
  • ক্লাউড ফাংশন পরিষেবাগুলি কীভাবে স্থাপন করবেন
  • ওয়ার্কফ্লো ব্যবহার করে কীভাবে পরিষেবাগুলি অর্কেস্ট্রেট করবেন৷
  • ইভেন্টর্কের সাথে ক্লাউড স্টোরেজ ইভেন্টগুলিতে কীভাবে ওয়ার্কফ্লোগুলি সাড়া দেওয়া যায়