iT邦幫忙

2025 iThome 鐵人賽

DAY 26
0
自我挑戰組

一路side project - 學習筆記系列 第 26

[Day 26] Cloud Run Functions(2nd gen)跟著lab用Console建、佈、測、看 Log

  • 分享至 

  • xImage
  •  

Cloud Run Functions: Qwik Start - Console

什麼是 Cloud Run function?

Cloud Run function 是一段程式碼,由事件觸發 後才執行(event-driven),常見事件包含:

  • HTTP 請求(本教學用這個)
  • Pub/Sub 訊息
  • Cloud Storage 檔案新增/變更
  • Firestore 資料變動 …等

因為有事件才跑,適合:

  • 圖片上傳後自動產縮圖
  • 新訊息來時推播通知
  • 後台資料處理、快取重建、報表產生

2nd gen 的 Cloud Functions 跑在 Cloud Run 上,享有 Cloud Run 的自動擴縮與更穩定的部署模型;會看到介面在「Cloud Run」底下建立「Function」。

什麼是 Serverless (無伺服器)?

  • Serverless 並不代表真的沒有伺服器,而是開發者不再需要管理底層的伺服器基礎架構。
  • 只需要專注於編寫程式碼,Google Cloud 會負責處理伺服器的佈建、擴展和維護。

事件驅動 (Event-Driven) 的優勢:

  • 成本效益: 只有在程式碼執行時才需要付費,沒有執行的閒置時間是不用付費的。
  • 自動擴展: 當請求量增加時,Cloud Run 會自動增加實例 (instance) 數量來應對;反之,沒有請求時可以縮減到零。

Lab 目標

  • 建立一個 Cloud Run function
  • 部署並測試
  • 查看日誌(Logs)

Task 1. 建立函式(Console)

  1. 進入主控台 Navigation menu > Cloud Run
  2. 建立服務 WRITE A FUNCTION
  3. 設定:
    • Service namegcfunction
    • Region:選就近區域(例:asia-east1
    • Authentication:Allow public access(公開存取,用於教學測試)
    • Execution environmentSecond generation
    • Revision scaling:把 Maximum number of instances 設為 5
    • 其他維持預設
  4. 若跳出啟用 API 的提示,按 ENABLE
  • 「Allow public access」會讓任何人都能呼叫你的 HTTP 端點,正式專案建議改用需要憑證(IAM / IAP / 具身分權杖)
  • 2nd gen 支援更一致的部署與更長的逾時上限、併發、VPC 功能等。

執行個體數上限 (Maximum number of instances):

  • 這是設定您的服務最多可以擴展到多少個實例。
  • 設定上限有助於控制成本,避免因意外的流量暴增而導致費用失控。

Task 2. 部署Function

  1. Inline editor 使用預設的 helloHttp 實作(Node.js)
  2. SAVE and REDEPLOY
  3. 看到綠色勾勾代表部署成功

參考:預設 index.js 大致像這樣(僅供觀念對照,Lab 會幫你放好)

// index.js
exports.helloHttp = (req, res) => {
  const msg = (req.body && req.body.message) || 'Hello World!';
  res.status(200).send(msg);
};
  • 這是一個簡單的 Node.js Express 應用程式。
  • 它會監聽 HTTP 請求,當收到請求時,它會讀取請求中的 message 參數,如果沒有,就回傳 "Hello World!"。

https://ithelp.ithome.com.tw/upload/images/20251009/201547647gz0xMgkHw.png

Task 3. 測試 Function

  1. 在服務詳情頁點 TEST

  2. 觸發事件 (Triggering event) 欄位的括號 {} 之間,輸入:

    {"message":"Hello World!"}
    
  3. 也可複製頁面提供的 CLI test command,在 Cloud Shell 執行

    常見測試範例(自行手打也 OK):

    FUNCTION_URL="https://<你的-雲端函式-url>"
    curl -X POST \
      -H "Content-Type: application/json" \
      -H "Authorization: Bearer $(gcloud auth print-identity-token)" \
      -d '{"message":"Hello World!"}' \
      "$FUNCTION_URL"
    
    

    預期輸出:Hello World!

https://ithelp.ithome.com.tw/upload/images/20251009/20154764NgqoTDGPNy.png

Task 4. 查看日誌(Logs)

  1. 開啟服務 → ObservabilityLogs
  2. 在 Results 可以看到呼叫紀錄與應用程式輸出
  • 除了應用程式輸出,平台也會記錄請求延遲、錯誤碼等。
  • 若沒看到日誌,先確認是否真的有請求、或篩選器是否過度嚴格。

上一篇
[Day 25] Cloud Monitoring x 第一個警告(Alert)
系列文
一路side project - 學習筆記26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言