會使用 Cloud Logging 的第二方觸發條件
許多 Google Cloud 事件都會記錄在 Cloud 稽核記錄中。您可以篩選這些記錄,並使用接收器將其轉送至 Pub/Sub 主題。之後 Pub/Sub 主題可傳送通知,以觸發 Cloud Run 函式。這樣您就可以透過產生稽核記錄的任何 Google Cloud 服務建立自訂事件。
設定
如要執行本文中的範例,您需要 Pub/Sub 主題和 Cloud Logging 接收器。以便讓範例將 Cloud 稽核記錄轉送至 Cloud Run 函式。
事件結構
和所有 Pub/Sub 觸發函式一樣,由 Cloud 記錄項目觸發的函式會收到 PubsubMessage
物件,這個物件的 data
參數是採 base64
編碼的字串。對 Cloud 記錄事件而言,解碼此值會以 JSON 字串傳回相關記錄項目。
程式碼範例
您可利用 Pub/Sub 觸發函式,偵測及回應匯出的 Cloud 記錄:
Node.js
Python
Go
Java
部署函式
使用下列指令部署函式:
Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs20 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
使用 --runtime
標記指定支援的 Node.js 版本執行階段 ID,以執行函式。
Python
gcloud functions deploy process_log_entry \ --runtime python312 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
使用 --runtime
標記指定支援的 Python 版本執行階段 ID,以執行函式。
Go
gcloud functions deploy ProcessLogEntry \ --runtime go121 \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
Java
gcloud functions deploy java-log-function \ --entry-point StackdriverLogging \ --runtime java17 \ --memory 512MB \
--trigger-topic YOUR_PUBSUB_TOPIC/
FLAGS...
使用 --runtime
標記指定支援的 Java 版本執行函式的執行階段 ID。
觸發函式
如果系統建立了符合其中一個篩選條件的 Cloud 記錄項目,您應會看見函式的對應記錄項目:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS