ক্লাউড রান ফাংশন (HTTP) দিয়ে শুরু করা

১. ভূমিকা

সংক্ষিপ্ত বিবরণ

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

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

এই কোডল্যাবে নিচের উদাহরণগুলোতে নোডজেএস (nodejs) স্যাম্পল ব্যবহার করা হয়েছে। তবে, আপনি আপনার পছন্দের ভাষায় ক্লাউড ফাংশনস ২য় জেনারেশন (Cloud Functions 2nd gen)-এর কোড স্যাম্পলগুলো ব্যবহার করতে পারেন:

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

  • HTTP অনুরোধ দ্বারা ট্রিগার হওয়া একটি ক্লাউড রান ফাংশন কীভাবে স্থাপন করবেন

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

gcloud CLI আপগ্রেড করুন

প্রথমত, আপনার gcloud CLI-এর একটি সাম্প্রতিক সংস্করণ ইনস্টল করা থাকতে হবে। আপনি নিম্নলিখিত কমান্ডটি চালিয়ে CLI আপডেট করতে পারেন:

gcloud components update

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

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

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

gcloud config set project $PROJECT_ID
SERVICE_NAME=crf-http-codelab

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

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

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

৩. একটি HTTP ফাংশন তৈরি করুন

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

mkdir -p cloud-run-functions/$SERVICE_NAME && cd $_

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

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

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

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

functions.http("helloHttp", (req, res) => {
    res.send(`Hello ${req.query.name || req.body.name || "World"}!`);
});

৪. ফাংশনটি স্থাপন করুন

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

gcloud beta run deploy $SERVICE_NAME \
      --source . \
      --function helloHttp \
      --region us-central1 \
      --no-allow-unauthenticated

এই কমান্ডটি বিল্ডপ্যাক ব্যবহার করে আপনার ফাংশন সোর্স কোডকে একটি প্রোডাকশন-রেডি কন্টেইনার ইমেজে রূপান্তর করে।

অনুগ্রহ করে নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:

  • –source ফ্ল্যাগটি ক্লাউড রানকে ফাংশনটিকে একটি রানযোগ্য কন্টেইনার-ভিত্তিক পরিষেবাতে বিল্ড করতে বলার জন্য ব্যবহৃত হয়।
  • –function ফ্ল্যাগটি (new) নতুন সার্ভিসের এন্ট্রিপয়েন্টকে আপনার কাঙ্ক্ষিত ফাংশন সিগনেচারে সেট করতে ব্যবহৃত হয়।
  • (ঐচ্ছিক) আপনার ফাংশনটিকে সর্বজনীনভাবে আহ্বানযোগ্য হওয়া থেকে বিরত রাখতে –no-allow-unauthenticated ব্যবহার করুন।

৫. ফাংশনটি পরীক্ষা করুন

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

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

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

৬. অভিনন্দন!

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

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

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

  • HTTP অনুরোধ দ্বারা ট্রিগার হওয়া একটি ক্লাউড রান ফাংশন কীভাবে স্থাপন করবেন

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

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

ক্লাউড রান ফাংশনটি ডিলিট করতে, https://console.cloud.google.com/run-এ অবস্থিত ক্লাউড রান ক্লাউড কনসোলে যান এবং crf-http-codelab সার্ভিসটি ডিলিট করে দিন।

আপনি যদি পুরো প্রজেক্টটি মুছে ফেলতে চান, তাহলে আপনি https://console.cloud.google.com/cloud-resource-manager -এ গিয়ে, ধাপ ২-এ তৈরি করা প্রজেক্টটি নির্বাচন করে 'ডিলিট' (Delete) বিকল্পটি বেছে নিতে পারেন। প্রজেক্টটি মুছে ফেললে, আপনাকে আপনার ক্লাউড এসডিকে (Cloud SDK)-তে প্রজেক্ট পরিবর্তন করতে হবে। আপনি gcloud projects list চালিয়ে সমস্ত উপলব্ধ প্রজেক্টের তালিকা দেখতে পারেন।