使用 Cloud Logging 的第二方触发器
Cloud Audit Logs 中会记录许多 Google Cloud Platform 事件。您可以过滤这些日志,并使用接收器将其转发到 Pub/Sub 主题。然后,这些 Pub/Sub 主题可以发送通知来触发 Cloud Functions 函数。这样,您就可以基于任何生成审核日志的 Google Cloud Platform 服务创建自定义事件。
配置
如需运行以下示例,您将需要一个 Pub/Sub 主题和一个 Cloud Logging 接收器。该示例使用它们将 Cloud Audit Logs 转发到 Cloud Functions 函数。
事件结构
与所有由 Pub/Sub 触发的函数一样,由 Cloud 日志条目触发的函数也会接收 PubsubMessage
对象,该对象的 data
参数是一个采用 base64
编码的字符串。对于 Cloud 日志事件,将该值解码后,系统会以 JSON 字符串形式返回相关日志条目。
示例代码
您可以使用由 Pub/Sub 触发的函数(如下所示)来检测导出的 Cloud 日志并做出响应:
Node.js
Python
Go
Java
部署函数
要部署函数,请使用以下命令:
Node.js
gcloud functions deploy processLogEntry \ --runtime nodejs16 \您可以使用
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
标志的以下值来指定偏好的 Node.js 版本:
nodejs16
(推荐)nodejs14
nodejs12
nodejs10
Python
gcloud functions deploy process_log_entry \ --runtime python39 \您可以使用
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
标志的以下值来指定偏好的 Python 版本:
python39
(推荐)python38
python37
Go
gcloud functions deploy ProcessLogEntry \ --runtime go116 \您可以使用
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
标志的以下值来指定偏好的 Go 版本:
go116
(推荐)go113
go111
Java
gcloud functions deploy java-log-function \ --entry-point StackdriverLogging \ --runtime java11 \ --memory 512MB \您可以使用
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
标志的以下值来指定偏好的 Java 版本:
java17
(预览版)java11
(推荐)
触发函数
当与您的某个过滤条件匹配的 Cloud 日志条目创建后,您应该会看到与您的函数对应的日志条目:
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS