許多 Google Cloud 事件都會記錄在 Cloud 稽核記錄中。您可以篩選這些記錄,並使用接收器將其轉送至 Pub/Sub 主題。之後 Pub/Sub 主題可傳送通知,以觸發 Cloud Run 函式。您可以透過產生稽核記錄的任何 Google Cloud 服務建立自訂事件。
本頁面提供範例,說明如何從轉送至 Pub/Sub 主題的記錄項目觸發函式。
由 Pub/Sub 觸發的函式事件結構
和所有 Pub/Sub 觸發函式一樣,由 Cloud Logging 記錄項目觸發的函式會收到 PubsubMessage
物件,這個物件的 data
參數是採 base64
編碼的字串。對於 Cloud Logging 記錄事件,解碼此值會以 JSON 字串傳回相關記錄項目。
事前準備
範例程式碼會將 Cloud 稽核記錄轉送至 Cloud Run 函式。執行範例程式碼前,請先完成下列事項:
如要瞭解要啟用哪些 API,以及部署由 Pub/Sub 觸發的函式時需要哪些角色,請參閱 Pub/Sub 觸發條件指南。
程式碼範例
您可利用 Pub/Sub 觸發函式,偵測及回應匯出的 Cloud Logging 記錄:
Node.js
Python
Go
Java
部署及觸發函式
如要在部署函式時設定觸發條件,請按照下列步驟操作:
在包含程式碼範例的目錄中執行下列指令,即可部署函式:
Node.js
gcloud run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGION
Python
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGION
Go
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGION
Java
gcloud run deploy java-log-function \ --source . \ --function StackdriverLogging \ --base-image java21 \ --region REGION
取代:
執行下列指令,建立用於篩選事件的觸發條件:
gcloud eventarc triggers create TRIGGER_NAME \ --location=EVENTARC_TRIGGER_LOCATION \ --destination-run-service=SERVICE \ --destination-run-region=REGION \ --event-filters="type=google.cloud.pubsub.topic.v1.messagePublished" \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
取代:
TRIGGER_NAME 改為觸發條件的名稱。
EVENTARC_TRIGGER_LOCATION,並提供 Eventarc 觸發條件的位置。一般來說,Eventarc 觸發條件的位置應與要監控事件的 Google Cloud 資源位置相符。在多數情況下,您也應該在相同區域中部署函式。如要進一步瞭解 Eventarc 觸發條件的所在位置,請參閱「瞭解 Eventarc 位置」。
將 SERVICE 替換成您要部署的函式名稱。
REGION,並使用函式的 Cloud Run 區域。
將 PROJECT_NUMBER 改成您的 Google Cloud 專案編號。Eventarc 觸發程序會連結至服務帳戶,在叫用函式時做為身分。Eventarc 觸發程序的服務帳戶必須具備叫用函式的權限。根據預設,Cloud Run 會使用預設的 Compute 服務帳戶。
--event-filters
標記會指定觸發條件監控的事件篩選器。如果事件符合所有event-filters
篩選條件,就會觸發函式呼叫。每個觸發條件都必須有支援的事件類型。建立事件篩選器後,即無法變更類型。如要變更事件篩選器類型,請建立新觸發條件並刪除舊觸發條件。視需要重複使用--event-filters
旗標和表單ATTRIBUTE=VALUE
中的支援篩選器,新增更多篩選器。
Cloud 記錄項目
如果系統建立了符合其中一個篩選條件的 Cloud 記錄項目,Google Cloud 控制台中函式的對應記錄項目應如下所示:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS