Cloud 稽核記錄會記錄許多 Google Cloud 服務的事件。您可以使用接收器篩選這些記錄,並將其轉送至觸發 Cloud Run 函式的 Pub/Sub 主題。對於任何會產生稽核記錄的Google Cloud 服務,皆可依此方式回應事件。
本頁範例說明如何從轉送至 Pub/Sub 主題的記錄項目叫用函式。本教學課程使用 Eventarc 觸發條件,但您也可以使用直接 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 REGIONPython
gcloud run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGIONGo
gcloud run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGIONJava
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" \ --transport-topic=projects/PROJECT_ID/topics/TOPIC_NAME \ --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 會使用預設運算服務帳戶。
--event-filters旗標會指定觸發條件監控的事件篩選器。當事件符合所有事件篩選器時,就會觸發函式呼叫。每個觸發條件都必須有支援的事件類型。事件篩選器類型建立後即無法變更。如要變更事件篩選器類型,請建立新的觸發條件,並刪除舊的觸發條件。您也可以重複使用--event-filters旗標,並以ATTRIBUTE=VALUE格式加入支援的篩選器,藉此新增更多篩選器。- TOPIC_NAME:接收記錄項目事件的 Pub/Sub 主題名稱。
--transport-topic旗標會指定 Eventarc 用來將事件傳輸至函式的 Pub/Sub 主題。請注意,如果您先前未建立 Pub/Sub 主題,則不需要這個旗標。
Cloud 記錄項目
如果建立的 Cloud 記錄項目符合任一篩選條件,Google Cloud 控制台中函式的對應記錄項目應如下所示:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS