C# এ Google ক্লাউড ফাংশন

১. ভূমিকা

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

ক্লাউড রান ফাংশন দুই প্রকারের হয়:

  • HTTP ফাংশনগুলো HTTP অনুরোধের সাড়া দেয়।
  • ইভেন্ট ফাংশনগুলো বিভিন্ন ঘটনার মাধ্যমে সক্রিয় হয়, যেমন ক্লাউড পাব/সাব- এ কোনো বার্তা প্রকাশিত হলে বা ক্লাউড স্টোরেজ- এ কোনো ফাইল আপলোড হলে।

efb3268e3b74ed4f.png

এই কোডল্যাবটি আপনাকে C# ব্যবহার করে নিজস্ব ক্লাউড রান ফাংশন তৈরি করার পদ্ধতি ধাপে ধাপে শেখাবে। আরও নির্দিষ্টভাবে বললে, আপনি বিভিন্ন গুগল ক্লাউড উৎস থেকে আসা HTTP এবং CloudEvents-এর প্রতিক্রিয়ায় C# ফাংশনগুলো ডিপ্লয় করবেন।

আপনি যা শিখবেন

  • .NET-এর জন্য ফাংশন ফ্রেমওয়ার্ক।
  • কীভাবে একটি HTTP ফাংশন লিখতে হয়।
  • ক্লাউড স্টোরেজ ইভেন্টের প্রতিক্রিয়া হিসেবে কীভাবে একটি ইভেন্ট ট্রিগারড ফাংশন লিখতে হয়।
  • ক্লাউড পাব/সাব ইভেন্টের প্রতিক্রিয়া হিসেবে কীভাবে একটি ইভেন্ট ট্রিগারড ফাংশন লিখতে হয়।
  • যেকোনো ধরনের ইভেন্টের প্রতিক্রিয়ায় কীভাবে একটি ইভেন্ট ট্রিগারড ফাংশন লিখতে হয়।

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

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

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

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

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

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

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

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

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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

৩. শুরু করার আগে

ক্লাউড শেলের ভিতরে, প্রয়োজনীয় পরিষেবাগুলি সক্রিয় করতে নিম্নলিখিত কমান্ডটি চালান:

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

এরপর, আপনার অঞ্চল নির্ধারণ করুন।

REGION=<YOUR_REGION>

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

প্রথমে সার্ভিস অ্যাকাউন্টটি তৈরি করুন।

PROJECT_ID=$(gcloud config get-value core/project)
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 Event Receiver রোলটি (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

৪. .NET এর জন্য ফাংশন ফ্রেমওয়ার্ক

Functions Framework for .NET হলো পোর্টেবল .NET ফাংশন লেখার জন্য একটি ওপেন সোর্স FaaS (Function as a Service) ফ্রেমওয়ার্ক – যা গুগল ক্লাউড ফাংশনস টিম নিয়ে এসেছে।

ফাংশনস ফ্রেমওয়ার্ক আপনাকে হালকা ওজনের ফাংশন লিখতে দেয় যা বিভিন্ন পরিবেশে চলে, যার মধ্যে রয়েছে:

  • গুগল ক্লাউড রান ফাংশন
  • আপনার স্থানীয় উন্নয়ন যন্ত্র
  • ক্লাউড রান এবং জিকেই-তে ক্লাউড রান
  • স্থানীয়-ভিত্তিক পরিবেশ

এই কোডল্যাবে, আপনি .NET-এর জন্য ফাংশনস ফ্রেমওয়ার্ক এবং এর টেমপ্লেট ব্যবহার করে C#-এ ক্লাউড ফাংশন তৈরি ও ডেপ্লয় করবেন।

dotnet জন্য ক্লাউড ফাংশন টেমপ্লেট ইনস্টল করতে ক্লাউড শেলের ভিতরে নিম্নলিখিত কমান্ডটি চালান:

dotnet new install Google.Cloud.Functions.Templates

এটি dotnet জন্য ৩টি টেমপ্লেট ইনস্টল করে। প্রতিটি টেমপ্লেট C#, F# এবং VB-তে পাওয়া যায় (কিন্তু এই ল্যাবে আপনি শুধু C# ব্যবহার করবেন)। টেমপ্লেটগুলো ইনস্টল হয়েছে কিনা তা যাচাই করতে, নিচের কমান্ডটি চালান:

dotnet new list

Templates                                                 Short Name            
-----------------------------------------------------------------------
Google Cloud Functions CloudEvent Function                gcf-event
Google Cloud Functions CloudEvent Function (Untyped)      gcf-untyped-event
Google Cloud Functions HttpFunction                       gcf-http

৫. HTTP ফাংশন

আপনি HTTP অনুরোধের প্রতিক্রিয়া জানাতে একটি HTTP ফাংশন তৈরি এবং স্থাপন করবেন।

gcf-http টেমপ্লেট ব্যবহার করে একটি HTTP ফাংশন তৈরি করুন:

mkdir HelloHttp
cd HelloHttp
dotnet new gcf-http

এটি একটি প্রজেক্ট এবং HTTP অনুরোধের প্রতিক্রিয়া জানানোর জন্য একটি Function.cs ফাইল তৈরি করে।

.csproj ফাইলে টার্গেট ফ্রেমওয়ার্কটি net8.0 তে পরিবর্তন করুন:

<TargetFramework>net8.0</TargetFramework>

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

gcloud beta run deploy hello-http-function \
    --source . \
    --function HelloHttp.Function \
    --base-image dotnet8 \
    --region $REGION \
    --allow-unauthenticated

আপনি যদি ক্লাউড ফাংশনস ২য় জেনারেশন হিসেবে ডেপ্লয় করতে চান, তাহলে নিম্নলিখিত কমান্ডটি ব্যবহার করুন:

gcloud functions deploy hello-http-function \
    --allow-unauthenticated \
    --entry-point HelloHttp.Function \
    --gen2 \
    --region $REGION \
    --runtime dotnet8 \
    --trigger-http

আপনার ফাংশনটি ডিপ্লয় করা হয়ে গেলে, আপনি নিম্নলিখিত কার্ল (curl) কমান্ডটি ব্যবহার করে এটিকে কল করতে পারেন:

SERVICE_URL=$(gcloud run services describe hello-http-function --platform managed --region $REGION --format 'value(status.url)')

curl $SERVICE_URL

৬. ক্লাউডইভেন্ট ফাংশন - জিসিএস

আপনি গুগল ক্লাউড স্টোরেজ (GCS) ইভেন্টের প্রতিক্রিয়া জানাতে একটি ক্লাউডইভেন্ট ফাংশন তৈরি এবং স্থাপন করবেন।

প্রথমে, একটি ক্লাউড স্টোরেজ বাকেট তৈরি করুন। এই বাকেটটি থেকেই আপনি পরবর্তীতে ইভেন্ট শুনবেন:

BUCKET_NAME="cloud-functions-bucket-${PROJECT_ID}"
gsutil mb -l us-central1 gs://${BUCKET_NAME}

gcf-event টেমপ্লেট ব্যবহার করে একটি CloudEvent ফাংশন তৈরি করুন:

cd ..
mkdir HelloGcs
cd HelloGcs
dotnet new gcf-event

এটি একটি প্রজেক্ট এবং একটি Function.cs ফাইল তৈরি করে যা CloudEvent অনুরোধগুলির প্রতিক্রিয়া জানায়। এটি CloudEvent এর ডেটা পার্স করে StorageObjectData তে সংরক্ষণ করে।

.csproj ফাইলে টার্গেট ফ্রেমওয়ার্কটি net8.0 তে পরিবর্তন করুন:

<TargetFramework>net8.0</TargetFramework>

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

gcloud beta run deploy hello-gcs-function \
      --source . \
      --function HelloGcs.Function \
      --region $REGION \
      --base-image dotnet8 \
      --no-allow-unauthenticated

এখন ক্লাউড রান ফাংশনের জন্য ট্রিগার তৈরি করুন।

BUCKET_REGION=$REGION

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

আপনি যদি ক্লাউড ফাংশনস ২য় জেনারেশন হিসেবে ডেপ্লয় করতে চান, তাহলে trigger-event এবং trigger-resource ফ্ল্যাগ ব্যবহার করে ফাংশনটি ডেপ্লয় করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

gcloud functions deploy hello-gcs-function \
    --allow-unauthenticated \
    --entry-point HelloGcs.Function \
    --gen2 \
    --region $REGION \
    --runtime dotnet8 \
    --trigger-event google.storage.object.finalize \
    --trigger-resource ${BUCKET_NAME} \
    --service-account=$SERVICE_ACCOUNT_ADDRESS

কয়েক মিনিট পর ফাংশনটি ক্লাউড কনসোলে দেখা যাবে:

c28654d74bb31420.png

স্টোরেজ বাকেটে একটি ফাইল আপলোড করে ফাংশনটি চালু করুন:

echo "Hello from Storage" > random.txt
gsutil cp random.txt gs://${BUCKET_NAME}

লগগুলো পড়ে যাচাই করুন যে ফাংশনটি চালু হয়েছিল কিনা:

ক্লাউড রান ফাংশনের জন্য আপনি এই কমান্ডটি চালাতে পারেন:

gcloud logging read "resource.labels.service_name=hello-gcs-function AND textPayload: Name" --format=json

দ্বিতীয় প্রজন্মের ফাংশনের জন্য, আপনি এই কমান্ডটি চালাতে পারেন:

gcloud functions logs read hello-gcs-function \
    --gen2 \
    --region us-central1

৭. ক্লাউডইভেন্ট ফাংশন - পাব/সাব

আপনি ক্লাউড পাব/সাব ইভেন্টের প্রতিক্রিয়া হিসেবে একটি ক্লাউডইভেন্ট ফাংশন তৈরি ও স্থাপন করবেন।

প্রথমে, একটি ক্লাউড পাব/সাব টপিক তৈরি করুন যা ইভেন্ট নির্গত করবে:

TOPIC_NAME=cloud-functions-topic
gcloud pubsub topics create ${TOPIC_NAME}

gcf-event টেমপ্লেট ব্যবহার করে একটি CloudEvent ফাংশন তৈরি করুন:

cd ..
mkdir HelloPubSub
cd HelloPubSub
dotnet new gcf-event

এটি একটি প্রজেক্ট এবং একটি Function.cs ফাইল তৈরি করে যা CloudEvent অনুরোধগুলির প্রতিক্রিয়া জানায়। এটি ডিফল্টরূপে CloudEvent এর ডেটা পার্স করে StorageObjectData তে রূপান্তর করে।

.csproj ফাইলে টার্গেট ফ্রেমওয়ার্কটি net8.0 তে পরিবর্তন করুন:

<TargetFramework>net8.0</TargetFramework>

পাব/সাব মেসেজ পার্স করার জন্য StorageObjectData MessagePublishedData তে পরিবর্তন করুন। Google.Events.Protobuf.Cloud.Storage.V1 Google.Events.Protobuf.Cloud.PubSub.V1 এ পরিবর্তন করুন।

অবশেষে, আপনার ফাংশনটি দেখতে এইরকম হবে:

using CloudNative.CloudEvents;
using Google.Cloud.Functions.Framework;
using Google.Events.Protobuf.Cloud.PubSub.V1;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace HelloPubSub;

public class Function : ICloudEventFunction<MessagePublishedData>
{
    public Task HandleAsync(CloudEvent cloudEvent, MessagePublishedData data, CancellationToken cancellationToken)
    {
        var nameFromMessage = data.Message?.TextData;
        var name = string.IsNullOrEmpty(nameFromMessage) ? "world" : nameFromMessage;
        Console.WriteLine($"Hello {name}");
        return Task.CompletedTask;
    }
}

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

gcloud beta run deploy hello-pubsub-function \
      --source . \
      --function HelloPubSub.Function \
      --region $REGION \
      --base-image dotnet8 \
      --no-allow-unauthenticated \
      --service-account=$SERVICE_ACCOUNT_ADDRESS

এখন ক্লাউড রান ফাংশনের জন্য ট্রিগার তৈরি করুন।

gcloud eventarc triggers create my-pubsub-trigger \
    --location=$REGION \
    --service-account=$SERVICE_ACCOUNT_ADDRESS \
    --destination-run-service=hello-pubsub-function \
    --destination-run-region=$REGION \
    --destination-run-path="/" \
    --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \
    --transport-topic=projects/$PROJECT_ID/topics/$TOPIC_NAME

আপনি যদি ক্লাউড ফাংশনস ২য় জেনারেশন হিসেবে ডেপ্লয় করতে চান, তাহলে trigger-topic ফ্ল্যাগ ব্যবহার করে ফাংশনটি ডেপ্লয় করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

gcloud functions deploy hello-pubsub-function \
    --allow-unauthenticated \
    --entry-point HelloPubSub.Function \
    --gen2 \
    --region us-central1 \
    --runtime dotnet8 \
    --trigger-topic ${TOPIC_NAME}

কয়েক মিনিট পর ফাংশনটি ক্লাউড কনসোলে দেখা যাবে:

3443808da7caf3bc.png

টপিকে একটি মেসেজ প্রকাশ করে ফাংশনটি চালু করুন:

gcloud pubsub topics publish ${TOPIC_NAME} --message="World"

লগগুলো পড়ে যাচাই করুন যে ফাংশনটি চালু হয়েছিল কিনা।

ক্লাউড রান ফাংশনের জন্য আপনি এই কমান্ডটি চালাতে পারেন:

gcloud logging read "resource.labels.service_name=hello-pubsub-function AND textPayload: World" --format=json

দ্বিতীয় প্রজন্মের ফাংশনের জন্য, আপনি এই কমান্ডটি চালাতে পারেন:

gcloud functions logs read hello-pubsub-function \
    --gen2 \
    --region us-central1

৮. ক্লাউডইভেন্ট ফাংশন - অপ্রকারভেদ

আপনি যদি CloudEvents নিয়ে পরীক্ষা-নিরীক্ষা করে থাকেন এবং আপনার কাছে এখনও কোনো নির্দিষ্ট পেলোড ডেটা মডেল না থাকে, অথবা আপনি যদি চান আপনার ফাংশনটি যেকোনো Cloud Event পরিচালনা করতে সক্ষম হোক, তাহলে আপনি একটি আনটাইপড CloudEvent ফাংশন ব্যবহার করতে পারেন।

gcf-untyped-event টেমপ্লেট ব্যবহার করে একটি ক্লাউডইভেন্ট ফাংশন তৈরি করুন:

cd ..
mkdir HelloUntyped
cd HelloUntyped
dotnet new gcf-untyped-event

এটি একটি প্রজেক্ট এবং একটি Function.cs ফাইল তৈরি করে, যা CloudEvent এর ডেটা পার্স করার কোনো চেষ্টা ছাড়াই CloudEvent অনুরোধগুলিতে সাড়া দেয়।

.csproj ফাইলে টার্গেট ফ্রেমওয়ার্কটি net8.0 তে পরিবর্তন করুন:

<TargetFramework>net8.0</TargetFramework>

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

gcloud beta run deploy hello-untyped-function \
      --source . \
      --function HelloUntyped.Function \
      --region $REGION \
      --base-image dotnet8 \
      --no-allow-unauthenticated

এখন ক্লাউড রান ফাংশনের জন্য ট্রিগার তৈরি করুন।

BUCKET_REGION=$REGION

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

আপনি যদি ক্লাউড ফাংশনস ২য় জেনারেশন হিসেবে ডেপ্লয় করতে চান, তাহলে trigger-event এবং trigger-resource ফ্ল্যাগ ব্যবহার করে ফাংশনটি ডেপ্লয় করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করতে পারেন:

gcloud functions deploy hello-untyped-function \
    --allow-unauthenticated \
    --entry-point HelloUntyped.Function \
    --gen2 \
    --region us-central1 \
    --runtime dotnet8 \
    --trigger-event google.storage.object.finalize \
    --trigger-resource ${BUCKET_NAME}

স্টোরেজ বাকেটে কোনো ফাইল আপলোড করা হলে ফাংশনটি সক্রিয় হবে।

কয়েক মিনিট পর ফাংশনটি ক্লাউড কনসোলে দেখা যাবে:

afe56530826787c6.png

স্টোরেজ বাকেটে একটি ফাইল আপলোড করে ফাংশনটি চালু করুন:

echo "Hello from Storage" > random.txt
gsutil cp random.txt gs://${BUCKET_NAME}

লগগুলো পড়ে যাচাই করুন যে ফাংশনটি চালু হয়েছিল কিনা।

ক্লাউড রান ফাংশনের জন্য আপনি এই কমান্ডটি চালাতে পারেন:

gcloud logging read "resource.labels.service_name=hello-gcs-function AND textPayload: Name" --format=json

দ্বিতীয় প্রজন্মের ফাংশনের জন্য, আপনি এই কমান্ডটি চালাতে পারেন:

gcloud functions logs read hello-untyped-function \
    --gen2 \
    --region us-central1

৯. অভিনন্দন!

কোডল্যাবটি সম্পন্ন করার জন্য অভিনন্দন।

আমরা যা আলোচনা করেছি

  • .NET-এর জন্য ফাংশন ফ্রেমওয়ার্ক।
  • কীভাবে একটি HTTP ক্লাউড ফাংশন লিখতে হয়।
  • ক্লাউড স্টোরেজ ইভেন্টের প্রতিক্রিয়া জানাতে কীভাবে একটি ক্লাউডইভেন্ট ফাংশন লিখতে হয়।
  • ক্লাউড পাব/সাব ইভেন্টের প্রতিক্রিয়া জানাতে কীভাবে একটি ক্লাউডইভেন্ট ফাংশন লিখতে হয়।
  • যেকোনো ধরনের ইভেন্টের প্রতিক্রিয়া জানাতে কীভাবে একটি ক্লাউডইভেন্ট ফাংশন লিখতে হয়।