Cloud Audit Logs 中会记录许多 Google Cloud 事件。您可以过滤这些日志,并使用接收器将其转发到 Pub/Sub 主题。然后,这些 Pub/Sub 主题可以发送通知来触发 Cloud Run functions。您可以通过任何生成审核日志的 Google Cloud 服务创建自定义事件。
本页面展示了一个示例,介绍了如何通过路由到 Pub/Sub 主题的日志条目触发函数。
Pub/Sub 触发的函数的事件结构
与所有由 Pub/Sub 触发的函数一样,由 Cloud Logging 日志条目触发的函数也会接收 PubsubMessage
对象,该对象的 data
参数是一个采用 base64
编码的字符串。对于 Cloud Logging 日志事件,将该值解码后,系统会以 JSON 字符串形式返回相关日志条目。
准备工作
示例代码会将 Cloud Audit Logs 转发到 Cloud Run 函数。在运行示例代码之前,您需要满足以下条件:
如需了解要启用的 API 以及部署由 Pub/Sub 触发的函数所需的角色,请参阅 Pub/Sub 触发器指南。
示例代码
您可以使用由 Pub/Sub 触发的函数来检测导出的 Cloud Logging 日志并做出响应:
Node.js
Python
Go
Java
部署和触发函数
如需在函数部署期间配置触发器,请执行以下操作:
在包含示例代码的目录中运行以下命令,以部署函数:
Node.js
gcloud beta run deploy nodejs-log-function \ --source . \ --function processLogEntry \ --base-image nodejs20 \ --region REGION
Python
gcloud beta run deploy python-log-function \ --source . \ --function process_log_entry \ --base-image python312 \ --region REGION
Go
gcloud beta run deploy go-log-function \ --source . \ --function ProcessLogEntry \ --base-image go122 \ --region REGION
Java
gcloud beta 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 使用默认计算服务账号。
--event-filters
标志用于指定触发器监控的事件过滤条件。与所有event-filters
过滤条件匹配的事件会触发对函数的调用。每个触发器都必须具有受支持的事件类型。创建后,您无法更改事件过滤条件类型。如需更改事件过滤条件类型,您必须创建新的触发器并删除旧触发器。您可以酌情使用格式为ATTRIBUTE=VALUE
的受支持过滤条件重复--event-filters
标志来添加更多过滤条件。
Cloud 日志条目
当与您的某个过滤条件匹配的 Cloud 日志条目创建后,Google Cloud 控制台中与您的函数对应的日志条目应如下所示:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS