การเริ่มต้นใช้งานฟังก์ชัน Cloud Run (HTTP)

1. บทนำ

ภาพรวม

ฟังก์ชัน Cloud Run เป็นวิธีใหม่ในการทําให้เวิร์กโหลดใช้งานได้โดยใช้กระบวนทัศน์การส่งเหตุการณ์และลายเซ็นฟังก์ชัน GCF ที่คุ้นเคย ฟังก์ชัน Cloud Run ช่วยให้คุณควบคุมบริการพื้นฐานที่สร้างใน Cloud Run ได้โดยตรง แทนที่จะใช้กระบวนการบิลด์และการกำหนดค่าการทำให้ใช้งานได้ที่เราแนะนำ

ฟังก์ชัน Cloud Run มี UX ที่เรียบง่ายของการติดตั้งใช้งานแหล่งที่มาของ Cloud Run ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์ควบคุมภาระงานได้อย่างเต็มที่โดยใช้การกำหนดค่า Cloud Run

Codelab นี้ใช้ตัวอย่าง nodejs ในตัวอย่างด้านล่าง อย่างไรก็ตาม คุณสามารถใช้ตัวอย่างโค้ดของ Cloud Functions รุ่นที่ 2 ในภาษาที่คุณเลือกได้

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

  • วิธีทำให้ฟังก์ชัน Cloud Run ที่ทริกเกอร์โดยคำขอ HTTP ใช้งานได้

2. ตั้งค่าตัวแปรสภาพแวดล้อมและเปิดใช้ API

อัปเกรด 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

ก่อนที่จะเริ่มใช้ Codelab นี้ได้ คุณจะต้องเปิดใช้ API หลายรายการ Codelab นี้กำหนดให้ใช้ API ต่อไปนี้ คุณเปิดใช้ API เหล่านั้นได้โดยการเรียกใช้คำสั่งต่อไปนี้

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

3. สร้างฟังก์ชัน HTTP

ก่อนอื่นให้สร้างไดเรกทอรีสำหรับซอร์สโค้ดและใช้คำสั่ง cd เพื่อไปยังไดเรกทอรีนั้น

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"}!`);
});

4. ทำให้ฟังก์ชันใช้งานได้

ตอนนี้คุณสามารถทําให้ฟังก์ชัน Cloud Run ใช้งานได้โดยการเรียกใช้คําสั่งต่อไปนี้

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

คำสั่งนี้ใช้ Buildpack เพื่อเปลี่ยนซอร์สโค้ดของฟังก์ชันเป็นอิมเมจคอนเทนเนอร์ที่พร้อมใช้งานจริง

โปรดทราบว่า

  • โดยใช้แฟล็ก –source เพื่อบอก Cloud Run ให้สร้างฟังก์ชันเป็นบริการที่ใช้คอนเทนเนอร์ที่เรียกใช้ได้
  • แฟล็ก –function (ใหม่) ใช้เพื่อตั้งค่าจุดแรกเข้าของบริการใหม่ให้เป็นลายเซ็นฟังก์ชันที่คุณต้องการเรียกใช้
  • (ไม่บังคับ) –no-allow-unauthenticated เพื่อป้องกันไม่ให้ฟังก์ชันของคุณเรียกใช้แบบสาธารณะได้

5. ทดสอบฟังก์ชัน

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

# 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

6. ยินดีด้วย

ขอแสดงความยินดีที่ทำ Codelab นี้เสร็จสมบูรณ์

เราขอแนะนำให้อ่านเอกสารเกี่ยวกับฟังก์ชัน Cloud Run

สิ่งที่เราได้พูดถึง

  • วิธีทำให้ฟังก์ชัน Cloud Run ที่ทริกเกอร์โดยคำขอ HTTP ใช้งานได้

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

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

หากต้องการลบฟังก์ชัน Cloud Run ให้ไปที่ Cloud Console ของ Cloud Run ที่ https://console.cloud.google.com/run แล้วลบcrf-http-codelabบริการ

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