ดูวิธีเรียกใช้ฟังก์ชัน Cloud Run ที่มีการตรวจสอบสิทธิ์

1. บทนำ

ภาพรวม

ฟังก์ชัน Cloud Run เป็นโซลูชันการประมวลผลที่ใช้งานง่ายสำหรับนักพัฒนาแอปในการสร้างฟังก์ชันแบบสแตนด์อโลนวัตถุประสงค์เดียวที่จะทริกเกอร์โดยใช้ HTTPS หรือตอบสนองต่อ CloudEvents ได้โดยไม่ต้องจัดการเซิร์ฟเวอร์หรือสภาพแวดล้อมรันไทม์ ดูข้อมูลเพิ่มเติมเกี่ยวกับฟังก์ชัน Cloud Run ในบล็อกโพสต์ของเรา

การควบคุมการเรียกใช้ฟังก์ชัน Cloud Run มี 2 วิธีหลักๆ ได้แก่ การรักษาความปลอดภัยในการเข้าถึงตามข้อมูลประจำตัว และการรักษาความปลอดภัยในการเข้าถึงโดยใช้การควบคุมการเข้าถึงตามเครือข่าย โค้ดแล็บนี้มุ่งเน้นที่แนวทางแรกและอธิบายสถานการณ์ 3 รูปแบบสำหรับการรักษาความปลอดภัยในการเข้าถึงตามข้อมูลประจำตัวเพื่อเรียกใช้ฟังก์ชัน ดังนี้

  1. ใช้โทเค็นข้อมูลประจำตัวของ gcloud เพื่อเรียกใช้ฟังก์ชันสำหรับการทำให้ใช้งานได้ภายในเครื่องและทดสอบ
  2. เลียนแบบบัญชีบริการเมื่อพัฒนาและทดสอบในเครื่องเพื่อใช้ข้อมูลเข้าสู่ระบบเดียวกันกับในเวอร์ชันที่ใช้งานจริง
  3. ใช้ไลบรารีของไคลเอ็นต์ Google เพื่อจัดการการตรวจสอบสิทธิ์กับ Google Cloud API เช่น เมื่อบริการจําเป็นต้องเรียกใช้ฟังก์ชัน

สิ่งที่คุณจะได้เรียนรู้

  • วิธีกำหนดค่าการตรวจสอบสิทธิ์ในฟังก์ชัน Cloud Run และตรวจสอบว่าได้กำหนดค่าการตรวจสอบสิทธิ์อย่างถูกต้องแล้ว
  • เรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้วจากสภาพแวดล้อมการพัฒนาในเครื่องโดยระบุโทเค็นสําหรับข้อมูลประจําตัว gcloud
  • วิธีสร้างบัญชีบริการและมอบบทบาทที่เหมาะสมให้กับบัญชีเพื่อเรียกใช้ฟังก์ชัน
  • วิธีแอบอ้างเป็นบริการจากสภาพแวดล้อมการพัฒนาในเครื่องซึ่งมีบทบาทที่เหมาะสมสำหรับการเรียกใช้ฟังก์ชัน

2. การตั้งค่าและข้อกำหนด

ข้อกำหนดเบื้องต้น

เปิดใช้งาน Cloud Shell

  1. จาก Cloud Console ให้คลิกเปิดใช้งาน Cloud Shell d1264ca30785e435.png

84688aa223b1c3a2.png

หากนี่เป็นครั้งแรกที่คุณเริ่มใช้ Cloud Shell คุณจะเห็นหน้าจอกลางที่อธิบายเกี่ยวกับ Cloud Shell หากเห็นหน้าจอกลาง ให้คลิกต่อไป

d95252b003979716.png

การจัดสรรและเชื่อมต่อกับ Cloud Shell ใช้เวลาเพียงไม่กี่นาที

7833d5e1c5d18f54.png

เครื่องเสมือนนี้โหลดด้วยเครื่องมือการพัฒนาทั้งหมดที่จำเป็น โดยมีไดเรกทอรีหลักขนาด 5 GB ถาวรและทำงานใน 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. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project

เอาต์พุตจากคำสั่ง

[core]
project = <PROJECT_ID>

หากไม่เป็นเช่นนั้น ให้ตั้งค่าด้วยคําสั่งนี้

gcloud config set project <PROJECT_ID>

เอาต์พุตจากคำสั่ง

Updated property [core/project].

3. สร้างและทดสอบฟังก์ชัน Cloud Run ที่มีการตรวจสอบสิทธิ์

การกําหนดให้ต้องตรวจสอบสิทธิ์หมายความว่าผู้ใช้ที่เรียกใช้ฟังก์ชันต้องมีบทบาทผู้เรียกใช้ Cloud Run มิเช่นนั้นฟังก์ชันจะแสดงข้อผิดพลาด 403 Forbidden โค้ดแล็บนี้จะแสดงวิธีมอบหมายบทบาท Invoker ที่เหมาะสมให้แก่ผู้ใช้

ตั้งค่าตัวแปรสภาพแวดล้อมในเครื่องสำหรับคำสั่ง gcloud แบบง่าย

ก่อนอื่น คุณจะต้องสร้างตัวแปรสภาพแวดล้อม 2-3 รายการเพื่อปรับปรุงความอ่านง่ายของคำสั่ง 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

จากนั้นบันทึก URL ของฟังก์ชันเป็นตัวแปรสภาพแวดล้อมเพื่อใช้ภายหลัง

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

หากต้องการทําให้การเผยแพร่เป็น Cloud Functions รุ่นที่ 2 ให้ใช้คําสั่งต่อไปนี้

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)')"

ยืนยันว่าฟังก์ชันต้องมีการตรวจสอบสิทธิ์โดยพยายามเรียกใช้ในฐานะผู้โทรที่ไม่ระบุตัวตน

คุณจะเรียกใช้ฟังก์ชันนี้โดยไม่ให้สิทธิ์เพื่อยืนยันว่าคุณได้รับข้อผิดพลาด 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>

ตอนนี้คุณพร้อมที่จะดูสถานการณ์ 3 อย่างที่สามารถเรียกใช้ฟังก์ชันด้วยการระบุการตรวจสอบสิทธิ์

4. สถานการณ์ 1: ใช้โทเค็นข้อมูลประจำตัว 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 คุณสามารถใช้คอนโซล IAM เพื่อยืนยันบทบาทที่มอบให้กับผู้รับอนุญาตได้

แม้ว่าการใช้โทเค็นข้อมูลประจำตัวของคุณเองจะเป็นวิธีที่รวดเร็วในการทดสอบฟังก์ชันระหว่างการพัฒนา แต่ผู้เรียกใช้ฟังก์ชันที่มีการตรวจสอบสิทธิ์จะต้องมีบทบาทที่เหมาะสม มิฉะนั้นผู้เรียกใช้จะได้รับข้อผิดพลาด 403 Forbidden

คุณควรปฏิบัติตามหลักการของสิทธิ์ขั้นต่ำที่สุดโดยจำกัดจำนวนข้อมูลประจำตัวและบัญชีบริการที่มีบทบาทในการเรียกใช้ฟังก์ชัน ในสถานการณ์ถัดไป คุณจะได้ดูวิธีสร้างบัญชีบริการใหม่และมอบบทบาทที่เหมาะสมเพื่อเรียกใช้ฟังก์ชัน

5. สถานการณ์ 2: แอบอ้างบัญชีบริการ

ในกรณีนี้ คุณจะต้องแอบอ้างเป็น (กล่าวคือ ใช้สิทธิ์ของ) บัญชีบริการเพื่อเรียกใช้ฟังก์ชันเมื่อพัฒนาและทดสอบในเครื่อง การแอบอ้างเป็นบัญชีบริการช่วยให้คุณทดสอบฟังก์ชันด้วยข้อมูลเข้าสู่ระบบเดียวกันกับในเวอร์ชันที่ใช้งานจริงได้

การทำเช่นนี้จะไม่เพียงไม่เพียงยืนยันบทบาท แต่ยังจะทำตามหลักการให้สิทธิ์ขั้นต่ำโดยไม่ต้องมอบบทบาทผู้เรียกใช้ Cloud Function ให้กับข้อมูลประจำตัวอื่นๆ เพื่อวัตถุประสงค์ในการทดสอบภายในเท่านั้นด้วย

เพื่อจุดประสงค์ของ Codelab นี้ คุณจะสร้างบัญชีบริการใหม่ที่มีเฉพาะบทบาทในการเรียกใช้ฟังก์ชันที่คุณสร้างไว้ใน Codelab นี้

สร้างบัญชีบริการใหม่

ก่อนอื่น คุณจะต้องสร้างตัวแปรสภาพแวดล้อมเพิ่มเติม 2-3 รายการเพื่อแสดงบัญชีบริการที่ใช้ในคำสั่ง 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. สถานการณ์ 3: ใช้ไลบรารีไคลเอ็นต์ของ Google

สำหรับส่วนสุดท้ายของ Codelab คุณจะต้องเรียกใช้บริการขนาดเล็กในเครื่องเพื่อสร้างโทเค็นรหัสสำหรับบัญชีบริการ จากนั้นเรียกใช้ฟังก์ชันแบบเป็นโปรแกรมโดยใช้ไลบรารีของไคลเอ็นต์ Google Auth และข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชัน (ADC) อ่านข้อมูลเพิ่มเติมเกี่ยวกับไลบรารีของไคลเอ็นต์ Google ได้ในส่วนอธิบายไลบรารีของไคลเอ็นต์ของเอกสาร

การใช้ ADC มีความสำคัญอย่างยิ่งเมื่อคุณต้องการเขียนและทดสอบฟังก์ชันภายในเครื่อง (เช่น บนแล็ปท็อป ใน Cloud Shell ฯลฯ) ขณะโต้ตอบกับทรัพยากรอื่นๆ ของ Google Cloud (เช่น Cloud Storage, Vision API ฯลฯ) ในตัวอย่างนี้ คุณจะเห็นวิธีให้บริการเรียกใช้ฟังก์ชันอื่นที่ต้องมีการตรวจสอบสิทธิ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ ADC และการพัฒนาในเครื่องได้ที่บล็อกโพสต์วิธีพัฒนาและทดสอบ Cloud Functions ในเครื่อง | บล็อก Google Cloud

เรียกใช้คำสั่ง gcloud เพื่อแอบอ้างเป็นบัญชีบริการ

ADC จะค้นหาข้อมูลเข้าสู่ระบบโดยอัตโนมัติตามสภาพแวดล้อมของแอปพลิเคชัน และใช้ข้อมูลเข้าสู่ระบบเหล่านั้นเพื่อตรวจสอบสิทธิ์กับ Google Cloud API Flag –impersonate-service-account ช่วยให้คุณแอบอ้างเป็นบัญชีบริการได้โดยใช้ข้อมูลประจำตัวของบัญชีนั้นเพื่อตรวจสอบสิทธิ์กับ Google Cloud API

หากต้องการแอบอ้างเป็นบัญชีบริการ ให้เรียกใช้คําสั่งต่อไปนี้

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

ตอนนี้คุณกำลังเรียกใช้คำสั่ง gcloud ในฐานะบัญชีบริการดังกล่าวแทนข้อมูลประจำตัวของคุณ

สร้างและเรียกใช้บริการเพื่อเรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้ว

รันไทม์แต่ละรายการมีคลังไคลเอ็นต์ Google Auth ของตัวเองที่คุณติดตั้งได้ Codelab นี้จะแนะนำการสร้างและเรียกใช้แอป 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. เรียกข้อมูล URL ของฟังก์ชัน Cloud Run ซึ่งคุณจะเพิ่มลงในโค้ดในขั้นตอนถัดไป
echo $FUNCTION_URL
  1. เพิ่มโค้ดต่อไปนี้ลงใน index.js อย่าลืมเปลี่ยนตัวแปร targetAudience เป็น URL ของฟังก์ชัน 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

คุณจะเห็นข้อความ "Hello World!" แสดงขึ้นมา

การแก้ปัญหา

หากเห็นข้อผิดพลาด "ปฏิเสธสิทธิ์ "iam.serviceAccounts.getOpenIdToken" ในทรัพยากร (หรืออาจไม่มี) โปรดรอ 2-3 นาทีเพื่อให้บทบาทผู้สร้างโทเค็นบัญชีบริการมีผล

หากคุณได้รับข้อผิดพลาด "ดึงข้อมูลโทเค็นระบุตัวตนในสภาพแวดล้อมนี้ไม่ได้ ให้ใช้ GCE หรือตั้งค่าตัวแปรสภาพแวดล้อม GOOGLE_APPLICATION_CREDENTIALS เป็นไฟล์ JSON ของข้อมูลเข้าสู่ระบบบัญชีบริการ" คุณอาจลืมเรียกใช้คําสั่ง

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

7. ยินดีด้วย

ขอแสดงความยินดีที่เรียน Codelab จนจบ

เราขอแนะนําให้อ่านเอกสารประกอบเกี่ยวกับวิธีรักษาความปลอดภัยให้กับฟังก์ชัน Cloud Run

นอกจากนี้ เราขอแนะนำบล็อกโพสต์นี้เกี่ยวกับการพัฒนาในเครื่องด้วยฟังก์ชัน Cloud Run เพื่อดูวิธีพัฒนาและทดสอบฟังก์ชัน Cloud Run ในสภาพแวดล้อมของนักพัฒนาซอฟต์แวร์ภายใน

หัวข้อที่ครอบคลุม

  • วิธีกำหนดค่าการตรวจสอบสิทธิ์ในฟังก์ชัน Cloud Run และตรวจสอบว่าได้กำหนดค่าการตรวจสอบสิทธิ์อย่างถูกต้องแล้ว
  • เรียกใช้ฟังก์ชันที่ตรวจสอบสิทธิ์แล้วจากสภาพแวดล้อมการพัฒนาในเครื่องโดยระบุโทเค็นสําหรับข้อมูลประจําตัว gcloud
  • วิธีสร้างบัญชีบริการและมอบบทบาทที่เหมาะสมให้กับบัญชีเพื่อเรียกใช้ฟังก์ชัน
  • วิธีแอบอ้างเป็นบริการจากสภาพแวดล้อมการพัฒนาในเครื่องซึ่งมีบทบาทที่เหมาะสมสำหรับการเรียกใช้ฟังก์ชัน

8. ล้างข้อมูล

หากต้องการหลีกเลี่ยงการเรียกเก็บเงินโดยไม่ตั้งใจ (เช่น Cloud Function นี้มีการเรียกใช้โดยไม่ตั้งใจมากกว่าการจัดสรรการเรียกใช้ฟังก์ชัน Cloud Run รายเดือนในแพ็กเกจฟรี) คุณสามารถลบ Cloud Function หรือลบโปรเจ็กต์ที่สร้างไว้ในขั้นตอนที่ 2

หากต้องการหยุดการแอบอ้างเป็นบัญชีบริการ ให้เข้าสู่ระบบอีกครั้งโดยใช้ข้อมูลประจำตัวของคุณ โดยทำดังนี้

gcloud auth application-default login

หากต้องการลบฟังก์ชัน Cloud Run ให้ไปที่คอนโซล Cloud ของฟังก์ชัน Cloud Run ที่ https://console.cloud.google.com/functions/ ตรวจสอบว่าโปรเจ็กต์ที่คุณสร้างในขั้นตอนที่ 2 เป็นโปรเจ็กต์ที่เลือกอยู่ในปัจจุบัน

เลือก my-authenticated-function ที่คุณติดตั้งใช้งานไปก่อนหน้านี้ จากนั้นกดลบ

หากคุณเลือกที่จะลบทั้งโปรเจ็กต์ ให้ไปที่ https://console.cloud.google.com/cloud-resource-manager เลือกโปรเจ็กต์ที่คุณสร้างในขั้นตอนที่ 2 แล้วเลือกลบ หากลบโปรเจ็กต์ คุณจะต้องเปลี่ยนโปรเจ็กต์ใน Cloud SDK คุณดูรายการโปรเจ็กต์ทั้งหมดที่ใช้ได้โดยการเรียกใช้ gcloud projects list