跳至主要內容
ESC
Study Jam:雲端基礎實作 — 第 6/10 篇

Cloud Run Functions 三種實作

GCP

課程概述

Cloud Run Functions(前身為 Cloud Functions)是 GCP 的函式即服務(FaaS)方案。你不用管伺服器,只要寫一個函式,它就會在事件發生時跑起來。這堂課我們會實作三種最常見的觸發模式。

你將學到

  • 建立 HTTP 觸發的 Cloud Run Function
  • 建立 Cloud Storage 事件觸發的函式
  • 建立 Pub/Sub 訊息觸發的函式
  • 理解第一代與第二代 Cloud Functions 的差異

核心概念

三種觸發模式

1. HTTP 觸發 — 透過 HTTP 請求呼叫

import functions_framework

@functions_framework.http
def hello(request):
    name = request.args.get('name', 'World')
    return f'Hello, {name}!'

2. Cloud Storage 觸發 — 檔案上傳/刪除時執行

@functions_framework.cloud_event
def process_file(cloud_event):
    data = cloud_event.data
    bucket = data["bucket"]
    name = data["name"]
    print(f"Processing file: gs://{bucket}/{name}")

3. Pub/Sub 觸發 — 收到訊息時執行

import base64

@functions_framework.cloud_event
def process_message(cloud_event):
    data = base64.b64decode(cloud_event.data["message"]["data"]).decode()
    print(f"Received message: {data}")

第一代 vs 第二代

特性第一代第二代(建議使用)
底層專屬基礎設施Cloud Run
並發1 請求/實例最高 1000 請求/實例
最長執行9 分鐘60 分鐘(HTTP 觸發)/9 分鐘(事件驅動)
記憶體上限8 GB32 GB
流量分配不支援支援

實作重點

  • 第二代 Functions 底層是 Cloud Run,效能跟彈性都比第一代好很多
  • 部署時記得指定 --runtime--entry-point
  • 使用 --allow-unauthenticated 才能公開 HTTP 端點
  • 本地測試可用 Functions Framework:functions-framework --target=hello

Skill Badge 指引

Lab 連結Cloud Run Functions: 3 Ways — 完成此 lab 可獲得 Skill Badge

延伸學習

Study Jam:雲端基礎實作 — 6/10 完成 查看系列全覽 →

留言討論

徽章解鎖!