पुष्टि किए गए Cloud Run फ़ंक्शन को कॉल करने का तरीका जानें

1. परिचय

खास जानकारी

Cloud Run फ़ंक्शन, डेवलपर के लिए लाइटवेट कंप्यूट सलूशन है. इसकी मदद से डेवलपर, एक ही मकसद के लिए बनाए गए ऐसे फ़ंक्शन बना सकते हैं जिन्हें एचटीटीपीएस का इस्तेमाल करके ट्रिगर किया जा सकता है. इसके अलावा, यह सर्वर या रनटाइम एनवायरमेंट को मैनेज किए बिना, CloudEvents का जवाब दे सकते हैं. हमारी ब्लॉग पोस्ट में, Cloud Run फ़ंक्शन के बारे में ज़्यादा जानें.

Cloud Run फ़ंक्शन को ट्रिगर करने के तरीके को कंट्रोल करने के दो मुख्य तरीके हैं: पहचान के आधार पर ऐक्सेस को सुरक्षित करना और नेटवर्क पर आधारित ऐक्सेस कंट्रोल का इस्तेमाल करके ऐक्सेस को सुरक्षित करना. इस कोडलैब में, पहले तरीके पर फ़ोकस किया गया है. साथ ही, इसमें किसी फ़ंक्शन को ट्रिगर करने के लिए, पहचान के आधार पर ऐक्सेस को सुरक्षित करने के तीन उदाहरण दिए गए हैं:

  1. स्थानीय डेवलपमेंट और टेस्टिंग के लिए किसी फ़ंक्शन को शुरू करने के लिए, अपने gcloud आइडेंटिटी टोकन का इस्तेमाल करना
  2. प्रोडक्शन के लिए इस्तेमाल किए गए क्रेडेंशियल का ही इस्तेमाल करने के लिए, स्थानीय तौर पर डेवलप और टेस्ट करते समय, सेवा खाते के नाम से काम करना
  3. Google Cloud API की पुष्टि करने के लिए, Google क्लाइंट लाइब्रेरी का इस्तेमाल करें. उदाहरण के लिए, जब किसी सेवा को किसी फ़ंक्शन को चालू करना हो

आपको इनके बारे में जानकारी मिलेगी

  • Cloud Run फ़ंक्शन पर पुष्टि करने की सुविधा को कॉन्फ़िगर करने और पुष्टि करने की सुविधा को सही तरीके से कॉन्फ़िगर किया गया है, इसकी पुष्टि करने का तरीका
  • अपनी gcloud पहचान के लिए टोकन देकर, स्थानीय डेवलपमेंट एनवायरमेंट से पुष्टि किए गए फ़ंक्शन को शुरू करना
  • सेवा खाता बनाने और किसी फ़ंक्शन को लागू करने के लिए, उसे सही भूमिका देने का तरीका
  • किसी स्थानीय डेवलपमेंट एनवायरमेंट में मौजूद किसी ऐसी सेवा के तौर पर काम करने का तरीका जिसके पास फ़ंक्शन को ट्रिगर करने के लिए ज़रूरी भूमिकाएं हों

2. सेटअप और ज़रूरी शर्तें

ज़रूरी शर्तें

  • आपने Cloud Console में लॉग इन किया हो
  • आपने पहले एचटीटीपी से ट्रिगर किए गए Cloud Run फ़ंक्शन को डिप्लॉय किया है. क्विकस्टार्ट का उदाहरण देखें.
  • (ज़रूरी नहीं) तीसरे उदाहरण के लिए, यह कोडलैब Node.js और npm का इस्तेमाल करता है. हालांकि, आपके पास Google Auth क्लाइंट लाइब्रेरी के साथ काम करने वाले किसी भी रनटाइम का इस्तेमाल करने का विकल्प होता है.

Cloud Shell चालू करें

  1. Cloud Console में, Cloud Shell चालू करें d1264ca30785e435.png पर क्लिक करें.

84688aa223b1c3a2.png

अगर Cloud Shell पहली बार शुरू किया जा रहा है, तो आपको एक इंटरमीडियरी स्क्रीन दिखेगी. इसमें Cloud Shell के बारे में बताया गया होगा. अगर आपको इंटरमीडियरी स्क्रीन दिखती है, तो जारी रखें पर क्लिक करें.

d95252b003979716.png

Cloud Shell को प्रोवाइड करने और उससे कनेक्ट करने में सिर्फ़ कुछ मिनट लगेंगे.

7833d5e1c5d18f54.png

इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल लोड होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराती है और Google Cloud में चलती है. इससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की सुविधा बेहतर होती है. इस कोडलैब में, ज़्यादातर काम ब्राउज़र से किया जा सकता है.

Cloud Shell से कनेक्ट होने के बाद, आपको यह दिखेगा कि आपने पुष्टि कर ली है और प्रोजेक्ट आपके प्रोजेक्ट आईडी पर सेट है.

  1. पुष्टि करने के लिए, Cloud Shell में यह कमांड चलाएं:
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 कमांड को आपके प्रोजेक्ट के बारे में पता है या नहीं, इसकी पुष्टि करने के लिए Cloud Shell में यह कमांड चलाएं:
gcloud config list project

कमांड आउटपुट

[core]
project = <PROJECT_ID>

अगर ऐसा नहीं है, तो इसे इस निर्देश से सेट किया जा सकता है:

gcloud config set project <PROJECT_ID>

कमांड आउटपुट

Updated property [core/project].

3. पुष्टि किया गया Cloud Run फ़ंक्शन बनाना और उसका टेस्ट करना

पुष्टि करने की ज़रूरत होने का मतलब है कि फ़ंक्शन को ट्रिगर करने वाले प्रिंसिपल के पास Cloud Run Invoker की भूमिका होनी चाहिए. ऐसा न होने पर, फ़ंक्शन 403 Forbidden गड़बड़ी दिखाएगा. इस कोडलैब में, किसी प्रिंसिपल को Invoker की सही भूमिकाएं देने का तरीका बताया गया है.

gcloud के आसान कमांड के लिए, लोकल एनवायरमेंट वैरिएबल सेटअप करें

सबसे पहले, आपको कुछ एनवायरमेंट वैरिएबल बनाने होंगे, ताकि इस कोडलैब में इस्तेमाल किए गए gcloud कमांड को आसानी से पढ़ा जा सके.

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

फ़ंक्शन के लिए सोर्स कोड बनाना

इस कोडलैब में Node.js का इस्तेमाल किया गया है. हालांकि, Google Auth क्लाइंट लाइब्रेरी के साथ काम करने वाले किसी भी रनटाइम का इस्तेमाल किया जा सकता है.

सबसे पहले, एक डायरेक्ट्री बनाएं और उस डायरेक्ट्री में cd करें.

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

Cloud Run फ़ंक्शन को सीधे Cloud Run पर डिप्लॉय करने के लिए, नीचे दिया गया कमांड चलाएं:

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

इसके बाद, फ़ंक्शन के यूआरएल को एनवायरमेंट वैरिएबल के तौर पर सेव किया जा सकता है, ताकि बाद में उसका इस्तेमाल किया जा सके.

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

अगर आपको Cloud Functions 2nd gen के तौर पर डिप्लॉय करना है, तो इस निर्देश का इस्तेमाल करें:

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

साथ ही, फ़ंक्शन के यूआरएल को बाद में इस्तेमाल करने के लिए, एनवायरमेंट वैरिएबल के तौर पर सेव किया जा सकता है.

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

पहचान छिपाकर कॉल करने वाले (कॉलर) के तौर पर शुरू करने की कोशिश करके पुष्टि करें कि फ़ंक्शन के लिए पुष्टि करने की ज़रूरत है

यह पुष्टि करने के लिए कि आपको 403 कोड वाली गड़बड़ी मिल रही है या नहीं, पुष्टि किए बिना फ़ंक्शन शुरू करने की सुविधा.

कमांड लाइन से, यह 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>

अब आप तीन स्थितियों के बारे में जानने के लिए तैयार हैं. इनमें पुष्टि करके, अपने फ़ंक्शन को चालू किया जा सकता है.

4. पहला उदाहरण: अपने 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 कोड वाली गड़बड़ी का मैसेज मिलता है, तो पक्का करें कि आपकी पहचान के पास Cloud Run Invoker की भूमिका हो. किसी प्रिंसिपल को दी गई भूमिकाओं की पुष्टि करने के लिए, IAM console का इस्तेमाल किया जा सकता है.

हालांकि, डेवलपमेंट के दौरान अपने फ़ंक्शन की जांच करने के लिए, अपने आइडेंटिटी टोकन का इस्तेमाल करना एक तेज़ तरीका है, लेकिन आपके पुष्टि किए गए फ़ंक्शन के कॉलर को सही भूमिकाओं की ज़रूरत होगी. ऐसा न होने पर, कॉलर को 403 'पाबंदी वाली गड़बड़ी' का मैसेज मिलेगा.

आपको कम से कम अधिकारों के सिद्धांत का पालन करना होगा. इसके लिए, आपको उन पहचानों और सेवा खातों की संख्या को सीमित करना होगा जिनके पास फ़ंक्शन को ट्रिगर करने की भूमिकाएं हैं. अगले उदाहरण में, आपको नया सेवा खाता बनाने और फ़ंक्शन को लागू करने के लिए, उसे सही भूमिकाएं देने का तरीका पता चलेगा.

5. दूसरी स्थिति: किसी सेवा खाते के नाम पर काम करना

इस स्थिति में, आपको स्थानीय तौर पर डेवलप और टेस्ट करते समय, किसी फ़ंक्शन को ट्रिगर करने के लिए, सेवा खाते के तौर पर कार्रवाइयां करनी होंगी. इसका मतलब है कि आपको सेवा खाते की अनुमतियां लेनी होंगी. किसी सेवा खाते के नाम पर काम करके, प्रोडक्शन में इस्तेमाल किए जाने वाले क्रेडेंशियल की मदद से, अपने फ़ंक्शन की जांच की जा सकती है.

ऐसा करने से, न सिर्फ़ भूमिकाओं की पुष्टि की जा सकेगी, बल्कि कम से कम विशेषाधिकार के सिद्धांत का पालन भी किया जा सकेगा. इसके तहत, सिर्फ़ लोकल टेस्टिंग के लिए, अन्य पहचानों को Cloud फ़ंक्शन को ट्रिगर करने वाले की भूमिका नहीं दी जाएगी.

इस कोडलैब के लिए, आपको एक नया सेवा खाता बनाना होगा. इसमें सिर्फ़ उस फ़ंक्शन को शुरू करने की भूमिकाएं होंगी जिसे आपने इस कोडलैब में बनाया है.

नया सेवा खाता बनाना

सबसे पहले, आपको 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"

साथ ही, सेवा खाते को Cloud Run के लिए शुरू करने वाले की भूमिका असाइन करें:

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!

6. तीसरी स्थिति: Google की क्लाइंट लाइब्रेरी का इस्तेमाल करना

कोडलैब के इस आखिरी हिस्से में, आपको सेवा खाते के लिए आईडी टोकन जनरेट करने के लिए, लोकल तौर पर एक छोटी सेवा चलानी होगी. इसके बाद, Google Auth क्लाइंट लाइब्रेरी और ऐप्लिकेशन के डिफ़ॉल्ट क्रेडेंशियल (ADC) का इस्तेमाल करके, फ़ंक्शन को प्रोग्राम के हिसाब से कॉल करना होगा. आप दस्तावेज़ों के क्लाइंट लाइब्रेरी के बारे में जानकारी देने वाले सेक्शन में Google क्लाइंट लाइब्रेरी के बारे में ज़्यादा पढ़ सकते हैं.

एडीसी का इस्तेमाल तब ज़रूरी होता है, जब आपको Google Cloud के अन्य संसाधनों (जैसे, Cloud Storage, Vision API वगैरह) के साथ इंटरैक्ट करते समय, अपने फ़ंक्शन को स्थानीय तौर पर लिखना और उसकी जांच करनी हो. जैसे, अपने लैपटॉप पर, Cloud Shell में वगैरह इस उदाहरण में, आपको यह तरीका पता चलेगा कि किसी सेवा को किसी ऐसे फ़ंक्शन को कैसे कॉल किया जाए जिसके लिए पुष्टि की ज़रूरत होती है. एडीसी और लोकल डेवलपमेंट के बारे में ज़्यादा जानने के लिए, Cloud Functions को लोकल तौर पर डेवलप और टेस्ट करने का तरीका | Google Cloud Blog ब्लॉग पोस्ट देखें

किसी सेवा खाते के नाम पर काम करने के लिए, gcloud कमांड चलाना

एडीसी, ऐप्लिकेशन एनवायरमेंट के आधार पर क्रेडेंशियल अपने-आप ढूंढता है. साथ ही, Google Cloud API की पुष्टि करने के लिए उन क्रेडेंशियल का इस्तेमाल करता है. –impersonate-service-account फ़्लैग की मदद से, किसी सेवा खाते के नाम पर काम किया जा सकता है. इसके लिए, Google Cloud API के साथ पुष्टि करने के लिए, सेवा खाते की पहचान का इस्तेमाल किया जाता है.

किसी सेवा खाते के नाम पर काम करने के लिए, यह कमांड चलाएं:

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

अब आपके पास अपनी पहचान के बजाय, उस सेवा खाते के तौर पर gcloud कमांड चलाने का विकल्प है.

पुष्टि किए गए फ़ंक्शन को लागू करने के लिए, सेवा बनाना और चलाना

हर रनटाइम की अपनी Google Auth क्लाइंट लाइब्रेरी होती है, जिसे इंस्टॉल किया जा सकता है. यह कोडलैब आपको स्थानीय तौर पर Node.js ऐप्लिकेशन बनाने और चलाने के बारे में जानकारी देता है.

Node.js के लिए, यह तरीका अपनाएं:

  1. नई डायरेक्ट्री बनाना
mkdir local-dev && cd $_
  1. नया Node.js ऐप्लिकेशन बनाना
npm init -y
  1. Google Auth क्लाइंट लाइब्रेरी इंस्टॉल करना
npm install google-auth-library
  1. index.js फ़ाइल बनाना
  2. अपने Cloud Run फ़ंक्शन का यूआरएल पाएं. इसे अगले चरण में अपने कोड में जोड़ा जाएगा.
echo $FUNCTION_URL
  1. index.js में यह कोड जोड़ें. targetAudience वैरिएबल को अपने Cloud Run फ़ंक्शन के यूआरएल में बदलना न भूलें.

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

और आपको "नमस्ते दुनिया!"

समस्या का हल

अगर आपको 'iam.serviceAccounts.getOpenIdToken' की अनुमति, रिसॉर्स पर अस्वीकार की गई है (या हो सकता है कि वह मौजूद न हो) गड़बड़ी दिखती है, तो कृपया कुछ मिनट इंतज़ार करें, ताकि सेवा खाता टोकन क्रिएटर की भूमिका लागू हो जाए.

अगर आपको इस एनवायरमेंट में आईडी टोकन फ़ेच नहीं किया जा सकता गड़बड़ी का मैसेज मिलता है, तो GCE का इस्तेमाल करें या GOOGLE_APPLICATION_CREDENTIALS एनवायरमेंट वैरिएबल को सेवा खाते के क्रेडेंशियल की JSON फ़ाइल पर सेट करें. ऐसा हो सकता है कि आपने कमांड चलाना भूल दिया हो

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

7. बधाई हो!

कोडलैब पूरा करने के लिए बधाई!

हमारा सुझाव है कि आप Cloud Run फ़ंक्शन को सुरक्षित करने के तरीके के बारे में दस्तावेज़ देखें.

हमारा सुझाव है कि आप Cloud Run फ़ंक्शन के साथ स्थानीय डेवलपमेंट पर लिखी गई इस ब्लॉग पोस्ट को भी पढ़ें. इससे आपको अपने स्थानीय डेवलपर एनवायरमेंट में, Cloud Run फ़ंक्शन को डेवलप और टेस्ट करने का तरीका जानने में मदद मिलेगी.

हमने क्या-क्या शामिल किया है

  • Cloud Run फ़ंक्शन पर पुष्टि करने की प्रक्रिया को कॉन्फ़िगर करने और यह पुष्टि करने का तरीका कि पुष्टि करने का तरीका सही तरीके से कॉन्फ़िगर किया गया है
  • अपनी gcloud पहचान के लिए टोकन देकर, स्थानीय डेवलपमेंट एनवायरमेंट से पुष्टि किए गए फ़ंक्शन को शुरू करना
  • सेवा खाता बनाने और किसी फ़ंक्शन को लागू करने के लिए, उसे सही भूमिका देने का तरीका
  • किसी स्थानीय डेवलपमेंट एनवायरमेंट में मौजूद किसी ऐसी सेवा के तौर पर काम करने का तरीका जिसके पास फ़ंक्शन को ट्रिगर करने के लिए ज़रूरी भूमिकाएं हों

8. व्यवस्थित करें

अनजाने में लगने वाले शुल्क से बचने के लिए, (उदाहरण के लिए, मुफ़्त टीयर में आपके हर महीने के Cloud Run फ़ंक्शन को ट्रिगर करने की संख्या की तुलना में, Cloud Function को गलती से ज़्यादा बार शुरू किया गया हो. आप या तो Cloud Function को मिटा सकते हैं या दूसरे चरण में बनाए गए प्रोजेक्ट को मिटा सकते हैं.

सेवा खाते के नाम पर काम करने की सुविधा बंद करने के लिए, अपनी पहचान का इस्तेमाल करके फिर से लॉगिन करें:

gcloud auth application-default login

Cloud Run फ़ंक्शन मिटाने के लिए, https://console.cloud.google.com/functions/ पर जाएं. पक्का करें कि आपने दूसरे चरण में जो प्रोजेक्ट बनाया है वह फ़िलहाल चुना गया प्रोजेक्ट हो.

वह my-authenticated-function चुनें जिसे आपने पहले डिप्लॉय किया था. इसके बाद, मिटाएं पर क्लिक करें.

अगर आपको पूरा प्रोजेक्ट मिटाना है, तो https://console.cloud.google.com/cloud-resource-manager पर जाएं. इसके बाद, दूसरे चरण में बनाया गया प्रोजेक्ट चुनें और 'मिटाएं' को चुनें. प्रोजेक्ट मिटाने पर, आपको अपने Cloud SDK में प्रोजेक्ट बदलने होंगे. gcloud projects list चलाकर, सभी उपलब्ध प्रोजेक्ट की सूची देखी जा सकती है.