การเริ่มต้นใช้งานฟังก์ชัน 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

ตั้งค่าตัวแปรสภาพแวดล้อม

คุณกำหนดตัวแปรสภาพแวดล้อมที่จะใช้ตลอดทั้ง Codelab ได้

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

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

โปรดทราบว่า

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

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

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

# 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 Run บน Cloud Console ที่ https://console.cloud.google.com/run แล้วลบบริการ crf-http-codelab

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