কীভাবে প্রমাণীকৃত ক্লাউড রান ফাংশনগুলি শুরু করতে হয় তা শিখুন৷

১. ভূমিকা

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

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

ক্লাউড রান ফাংশন কল নিয়ন্ত্রণ করার দুটি প্রধান পদ্ধতি রয়েছে: পরিচয়ের ভিত্তিতে অ্যাক্সেস সুরক্ষিত করা এবং নেটওয়ার্ক-ভিত্তিক অ্যাক্সেস কন্ট্রোল ব্যবহার করে অ্যাক্সেস সুরক্ষিত করা। এই কোডল্যাবটি প্রথম পদ্ধতির উপর আলোকপাত করে এবং একটি ফাংশন কল করার জন্য পরিচয়ের ভিত্তিতে অ্যাক্সেস সুরক্ষিত করার ৩টি সিনারিও ধাপে ধাপে দেখিয়ে দেবে:

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

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

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

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

পূর্বশর্ত

  • আপনি ক্লাউড কনসোলে লগ ইন করেছেন।
  • আপনি পূর্বে একটি HTTP ট্রিগারড ক্লাউড রান ফাংশন স্থাপন করেছেন। কুইকস্টার্ট উদাহরণটি দেখুন।
  • (ঐচ্ছিক) তৃতীয় সিনারিওর জন্য, এই কোডল্যাবে উদাহরণ হিসেবে Node.js এবং npm ব্যবহার করা হয়েছে, কিন্তু আপনি Google Auth ক্লায়েন্ট লাইব্রেরি দ্বারা সমর্থিত যেকোনো রানটাইম ব্যবহার করতে পারেন।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, অ্যাক্টিভেট ক্লাউড শেল-এ ক্লিক করুন। d1264ca30785e435.png .

84688aa223b1c3a2.png

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

d95252b003979716.png

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

7833d5e1c5d18f54.png

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

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

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. একটি প্রমাণীকৃত ক্লাউড রান ফাংশন তৈরি ও পরীক্ষা করুন

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

gcloud কমান্ড সহজ করার জন্য স্থানীয় পরিবেশ ভেরিয়েবল সেট আপ করুন।

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

REGION=us-central1
PROJECT_ID=$(gcloud config get-value project)

ফাংশনটির জন্য সোর্স কোড তৈরি করুন।

যদিও এই কোডল্যাবে Node.js ব্যবহার করা হয়েছে, আপনি Google Auth ক্লায়েন্ট লাইব্রেরি দ্বারা সমর্থিত যেকোনো রানটাইম ব্যবহার করতে পারেন।

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

mkdir auth-function-codelab && cd $_

এরপর, package.json ফাইলটি তৈরি করুন।

touch package.json

echo '{
  "dependencies": {
    "@google-cloud/functions-framework": "^3.0.0"
  }
}
' > package.json

এরপরে, index.js সোর্স ফাইলটি তৈরি করুন।

touch index.js

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

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

প্রমাণীকৃত ফাংশন তৈরি করুন

nodejs20 রানটাইমের জন্য একটি অথেনটিকেটেড ফাংশন তৈরি করার ধাপগুলো এখানে দেওয়া হলো। তবে, আপনি Google Auth ক্লায়েন্ট লাইব্রেরি দ্বারা সমর্থিত যেকোনো রানটাইম ব্যবহার করতে পারেন।

FUNCTION_NAME=authenticated-function-codelab
ENTRY_POINT=helloWorld

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

gcloud beta run deploy $FUNCTION_NAME \
      --source . \
      --function helloWorld \
      --region $REGION \
      --no-allow-unauthenticated

এবং তারপর আপনি ফাংশন URL-টি একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সংরক্ষণ করে পরে ব্যবহার করতে পারেন।

FUNCTION_URL="$(gcloud run services describe $FUNCTION_NAME --region $REGION --format 'value(status.url)')"

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

gcloud functions deploy nodejs-http-function \
  --gen2 \
  --runtime=nodejs20 \
  --region=$REGION \
  --source=. \
  --entry-point=helloWorld \
  --trigger-http \
  --no-allow-unauthenticated

এবং তারপর আপনি ফাংশন URL-টি একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সংরক্ষণ করে পরে ব্যবহার করতে পারেন।

FUNCTION_URL="$(gcloud functions describe $FUNCTION_NAME --gen2 --region us-central1 --format='get(serviceConfig.uri)')"

বেনামী কলার হিসাবে কল করার চেষ্টা করে যাচাই করুন যে ফাংশনটির জন্য প্রমাণীকরণের প্রয়োজন আছে।

আপনি প্রত্যাশিত ৪০৩ এরর পাচ্ছেন কিনা তা যাচাই করার জন্য অথেনটিকেশন ছাড়াই ফাংশনটি কল করবেন।

কমান্ড লাইন থেকে নিম্নলিখিত curl কমান্ডটি চালান:

curl -i $FUNCTION_URL

আপনি নিম্নলিখিত ফলাফল দেখতে পাবেন:

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>403 Forbidden</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Forbidden</h1>
<h2>Your client does not have permission to get URL <code>/</code> from this server.</h2>
<h2></h2>
</body></html>

এখন আপনি এমন ৩টি পরিস্থিতি পর্যালোচনা করার জন্য প্রস্তুত, যেখানে আপনি অথেনটিকেশন প্রদান করে আপনার ফাংশনটি কল করতে পারবেন।

৪. দৃশ্যকল্প ১: আপনার gcloud আইডেন্টিটি টোকেন ব্যবহার করুন

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

নিম্নলিখিত কমান্ডটি চালিয়ে gcloud ব্যবহার করে আপনার প্রমাণীকরণ যাচাই করুন:

gcloud auth list

আপনার সক্রিয় পরিচয়ের পাশে একটি তারকাচিহ্ন দেখতে পাবেন, উদাহরণস্বরূপ:

Credentialed Accounts
ACTIVE  ACCOUNT

*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

gcloud init এবং gcloud auth login সেট আপ করার বিষয়ে আরও তথ্য আপনি ডক্স-এ খুঁজে পেতে পারেন।

এরপর, ফাংশনটি চালু করুন এবং এতে আপনার পরিচয় টোকেনটি পাস করুন।

curl $FUNCTION_URL -H "Authorization: bearer $(gcloud auth print-identity-token)"

এখন আপনি ফলাফল দেখতে পাবেন:

Hello World!

সমস্যা সমাধান

যদি আপনি একটি 403 Forbidden ত্রুটি পান, তাহলে নিশ্চিত করুন যে আপনার আইডেন্টিটির Cloud Run Invoker রোলটি আছে। আপনি কোনো প্রিন্সিপালকে দেওয়া রোলগুলো যাচাই করতে IAM কনসোল ব্যবহার করতে পারেন।

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

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

৫. দৃশ্যকল্প ২: একটি পরিষেবা অ্যাকাউন্টের ছদ্মবেশ ধারণ করা

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

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

এই কোডল্যাবের উদ্দেশ্যে, আপনি একটি নতুন সার্ভিস অ্যাকাউন্ট তৈরি করবেন যার শুধুমাত্র এই কোডল্যাবে তৈরি করা ফাংশনটি কল করার অধিকার থাকবে।

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

প্রথমে, gcloud কমান্ডগুলিতে ব্যবহৃত সার্ভিস অ্যাকাউন্টগুলিকে বোঝানোর জন্য আপনাকে আরও কয়েকটি এনভায়রনমেন্ট ভেরিয়েবল তৈরি করতে হবে।

SERVICE_ACCOUNT_NAME="invoke-functions-codelab"
SERVICE_ACCOUNT_ADDRESS=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com

এরপর, আপনাকে সার্ভিস অ্যাকাউন্টটি তৈরি করতে হবে।

gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME \
  --display-name="Cloud Run function Authentication codelab"

এবং সার্ভিস অ্যাকাউন্টকে ক্লাউড রান ইনভোকার রোল প্রদান করুন:

gcloud run services add-iam-policy-binding $FUNCTION_NAME \
  --region=us-central1  \
  --member serviceAccount:$SERVICE_ACCOUNT_ADDRESS \
  --role='roles/run.invoker'

সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করে ফাংশনটি চালু করুন।

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

ছদ্মবেশ ধারণের জন্য প্রয়োজনীয় ভূমিকা যোগ করুন

কোনো সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করার জন্য, আপনার ইউজার অ্যাকাউন্টে সার্ভিস অ্যাকাউন্ট টোকেন ক্রিয়েটর (roles/iam.serviceAccountTokenCreator) রোলটি থাকা প্রয়োজন, যা সার্ভিস অ্যাকাউন্টটির জন্য একটি আইডি টোকেন তৈরি করতে পারে।

আপনার সক্রিয় ব্যবহারকারী অ্যাকাউন্টকে এই ভূমিকাটি প্রদান করতে আপনি নিম্নলিখিত কমান্ডগুলি চালাতে পারেন:

ACCOUNT_EMAIL=$(gcloud auth list --filter=status:ACTIVE --format="value(account)")

gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT_ADDRESS  \
  --member user:$ACCOUNT_EMAIL \
  --role='roles/iam.serviceAccountTokenCreator'

সার্ভিস অ্যাকাউন্টের আইডি টোকেন ব্যবহার করুন

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

curl $FUNCTION_URL -H "Authorization: bearer $(gcloud auth print-identity-token --impersonate-service-account $SERVICE_ACCOUNT_ADDRESS)" 

এবং আপনি নিম্নলিখিত বিষয়গুলো দেখতে পাবেন:

WARNING: This command is using service account impersonation. All API calls will be executed as [invoke-functions-codelab@<project-id>.iam.gserviceaccount.com].

Hello World!

৬. দৃশ্যকল্প ৩: গুগল ক্লায়েন্ট লাইব্রেরি ব্যবহার করুন

কোডল্যাবের এই শেষ অংশের জন্য, আপনি একটি সার্ভিস অ্যাকাউন্টের জন্য আইডি টোকেন তৈরি করতে স্থানীয়ভাবে একটি ছোট সার্ভিস চালাবেন এবং তারপর গুগল অথোরাইজেশন ক্লায়েন্ট লাইব্রেরিঅ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়ালস (ADC) ব্যবহার করে প্রোগ্রাম্যাটিকভাবে ফাংশনটি কল করবেন। আপনি ডক্সের ' ক্লায়েন্ট লাইব্রেরি ব্যাখ্যা করা হয়েছে' অংশে গুগল ক্লায়েন্ট লাইব্রেরি সম্পর্কে আরও পড়তে পারেন।

অন্যান্য গুগল ক্লাউড রিসোর্সের (যেমন ক্লাউড স্টোরেজ, ভিশন এপিআই, ইত্যাদি) সাথে ইন্টারঅ্যাক্ট করার সময়, যখন আপনি আপনার ফাংশনটি স্থানীয়ভাবে (যেমন আপনার ল্যাপটপে, ক্লাউড শেলে, ইত্যাদি) লিখতে এবং পরীক্ষা করতে চান, তখন ADC ব্যবহার করা বিশেষভাবে গুরুত্বপূর্ণ। এই উদাহরণে, আপনি দেখবেন কীভাবে একটি সার্ভিসকে দিয়ে অথেনটিকেশন প্রয়োজন এমন অন্য একটি ফাংশনকে কল করানো যায়। ADC এবং স্থানীয় ডেভেলপমেন্ট সম্পর্কে আরও তথ্যের জন্য, "How to develop and test your Cloud Functions locally | Google Cloud Blog" ব্লগ পোস্টটি দেখুন।

একটি সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করতে gcloud কমান্ডটি চালান।

ADC অ্যাপ্লিকেশন পরিবেশের উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে ক্রেডেনশিয়াল খুঁজে বের করে এবং Google Cloud API-গুলিতে প্রমাণীকরণের জন্য সেই ক্রেডেনশিয়ালগুলি ব্যবহার করে। –impersonate-service-account ফ্ল্যাগটি আপনাকে Google Cloud API-গুলির বিরুদ্ধে প্রমাণীকরণের জন্য একটি পরিষেবা অ্যাকাউন্টের পরিচয় ব্যবহার করে ছদ্মবেশ ধারণ করার অনুমতি দেয়।

কোনো সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ করতে, আপনি নিম্নলিখিত কমান্ডটি চালাতে পারেন:

gcloud auth application-default login --impersonate-service-account=$SERVICE_ACCOUNT_ADDRESS

এখন আপনি আপনার নিজের পরিচয়ের পরিবর্তে সেই সার্ভিস অ্যাকাউন্ট দিয়ে gcloud কমান্ডগুলো চালাচ্ছেন।

একটি প্রমাণীকৃত ফাংশন আহ্বান করার জন্য একটি পরিষেবা তৈরি করুন এবং চালান।

প্রতিটি রানটাইমের নিজস্ব গুগল অথেন্টিকেশন ক্লায়েন্ট লাইব্রেরি থাকে যা আপনি ইনস্টল করতে পারেন। এই কোডল্যাবটি আপনাকে স্থানীয়ভাবে একটি Node.js অ্যাপ তৈরি এবং চালানোর পদ্ধতি ধাপে ধাপে দেখাবে।

Node.js-এর জন্য ধাপগুলো নিচে দেওয়া হলো:

  1. একটি নতুন ডিরেক্টরি তৈরি করুন
mkdir local-dev && cd $_
  1. একটি নতুন Node.js অ্যাপ তৈরি করুন
npm init -y
  1. গুগল অথেন্টিকেশন ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন
npm install google-auth-library
  1. একটি index.js ফাইল তৈরি করুন
  2. আপনার ক্লাউড রান ফাংশনের URL-টি সংগ্রহ করুন, যা আপনি পরবর্তী ধাপে আপনার কোডে যোগ করবেন।
echo $FUNCTION_URL
  1. index.js-এ নিম্নলিখিত কোডটি যোগ করুন। targetAudience ভেরিয়েবলটি আপনার Cloud Run ফাংশন URL-এ পরিবর্তন করতে ভুলবেন না।

index.js

// Cloud Functions uses your function's url as the `targetAudience` value

const targetAudience = '<YOUR-CLOUD-RUN-FUNCTION-URL>';

// For Cloud Functions, endpoint(`url`) and `targetAudience` should be equal

const url = targetAudience;

const { GoogleAuth } = require('google-auth-library');
const auth = new GoogleAuth();

async function request() {
    console.info(`request ${url} with target audience ${targetAudience}`);

    // this call retrieves the ID token for the impersonated service account
    const client = await auth.getIdTokenClient(targetAudience);

    const res = await client.request({ url });
    console.info(res.data);
}

request().catch(err => {
    console.error(err.message);
    process.exitCode = 1;
});
  1. অ্যাপটি চালান
node index.js

এবং এর ফলে তৈরি হওয়া "হ্যালো ওয়ার্ল্ড!"-টি আপনার দেখা উচিত।

সমস্যা সমাধান

যদি আপনি "Permission 'iam.serviceAccounts.getOpenIdToken' denied on resource (or it may not exist)." এই ত্রুটিটি দেখতে পান, তাহলে অনুগ্রহ করে "Service Account Token Creator" রোলটি প্রোপাগেট হওয়ার জন্য কয়েক মিনিট অপেক্ষা করুন।

যদি আপনি "Cannot fetch ID token in this environment, use GCE or set the GOOGLE_APPLICATION_CREDENTIALS environment variable to a service account credentials JSON file" এই ত্রুটিটি পেয়ে থাকেন, তাহলে সম্ভবত আপনি কমান্ডটি চালাতে ভুলে গেছেন।

gcloud auth application-default login --impersonate-service-account=$SERVICE_ACCOUNT_ADDRESS

৭. অভিনন্দন!

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

ক্লাউড রান ফাংশনগুলো সুরক্ষিত করার পদ্ধতি সম্পর্কে ডকুমেন্টেশন পর্যালোচনা করার জন্য আমরা সুপারিশ করছি।

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

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

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

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

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

সার্ভিস অ্যাকাউন্টের ছদ্মবেশ ধারণ বন্ধ করতে, আপনি আপনার নিজের পরিচয় ব্যবহার করে পুনরায় লগইন করতে পারেন:

gcloud auth application-default login

ক্লাউড রান ফাংশনটি ডিলিট করতে, https://console.cloud.google.com/functions/ -এ অবস্থিত ক্লাউড রান ফাংশন ক্লাউড কনসোলে যান। নিশ্চিত করুন যে ধাপ ২-এ আপনার তৈরি করা প্রজেক্টটিই বর্তমানে নির্বাচিত প্রজেক্ট।

আপনি আগে স্থাপন করা my-authenticated-function- টি নির্বাচন করুন। তারপর ডিলিট চাপুন।

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