पुष्टि किए गए 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 का इस्तेमाल पहली बार किया है, तो आपको बीच के लेवल पर एक स्क्रीन दिखेगी. इसमें यह बताया जाएगा कि इस सुविधा का क्या मतलब है. अगर आपको बीच में आने वाली स्क्रीन दिखेगी, तो जारी रखें पर क्लिक करें.

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 ऑथराइज़ेशन क्लाइंट लाइब्रेरी के साथ काम करने वाले किसी भी रनटाइम का इस्तेमाल किया जा सकता है.

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 Forbidden गड़बड़ी का मैसेज मिलेगा.

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

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

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

इससे, आपको भूमिकाओं की पुष्टि करने के साथ-साथ, कम से कम अधिकारों के नियम का पालन करने में भी मदद मिलेगी. इसके लिए, आपको सिर्फ़ स्थानीय जांच के लिए, अन्य पहचानों को Cloud Function Invoker की भूमिका नहीं देनी होगी.

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

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

सबसे पहले, आपको 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 की पुष्टि वाली क्लाइंट लाइब्रेरी और ऐप्लिकेशन डिफ़ॉल्ट क्रेडेंशियल (एडीसी) का इस्तेमाल करके, फ़ंक्शन को प्रोग्राम के हिसाब से कॉल करें. Google क्लाइंट लाइब्रेरी के बारे में ज़्यादा जानने के लिए, दस्तावेज़ों के क्लाइंट लाइब्रेरी के बारे में जानकारी वाले सेक्शन पर जाएं.

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

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

ADC, ऐप्लिकेशन के एनवायरमेंट के हिसाब से क्रेडेंशियल अपने-आप ढूंढता है और उन क्रेडेंशियल का इस्तेमाल Google Cloud API की पुष्टि करने के लिए करता है. –प्रतिरूपित सेवा-खाता फ़्लैग आपको 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 Function को मिटाया जा सकता है या दूसरे चरण में बनाया गया प्रोजेक्ट मिटाया जा सकता है. उदाहरण के लिए, अगर इस Cloud Function को फ़्री टीयर में, Cloud Run फ़ंक्शन को हर महीने इस्तेमाल करने के लिए तय किए गए कोटे से ज़्यादा बार गलती से इस्तेमाल किया जाता है, तो ऐसा किया जा सकता है.

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

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 चलाकर, सभी उपलब्ध प्रोजेक्ट की सूची देखी जा सकती है.