Cloud Logging でのセカンド パーティ トリガー
多くの Google Cloud Platform イベントが Cloud Audit Logs に記録されます。これらのログをフィルタリングし、シンクを使用して 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 nodejs18 \優先する Node.js のバージョンを指定するには、
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
フラグに次の値を使用します。
nodejs18
(推奨)nodejs20
(プレビュー版)nodejs16
nodejs14
nodejs12
nodejs10
Python
gcloud functions deploy process_log_entry \ --runtime python311 \優先する Python バージョンを指定するには、
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
フラグに次の値を使用します。
python311
(推奨)python310
python39
python38
python37
Go
gcloud functions deploy ProcessLogEntry \ --runtime go120 \優先する Go バージョンを指定するには、
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
フラグに次の値を使用します。
go120
(推奨)go119
go118
go116
go113
Java
gcloud functions deploy java-log-function \ --entry-point StackdriverLogging \ --runtime java17 \ --memory 512MB \優先する Java バージョンを指定するには、
--trigger-topic YOUR_PUBSUB_TOPIC
--runtime
フラグに次の値を使用します。
java17
(推奨)java11
関数のトリガー
フィルタに一致する Cloud ログエントリが作成されると、関数でも対応するログエントリを確認できます。
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS