多くの Google Cloud イベントが Cloud Audit Logs に記録されます。これらのログをフィルタリングし、シンクを使用して Pub/Sub トピックに転送できます。これらの Pub/Sub トピックは、Cloud Run functions をトリガーする通知を送信します。監査ログを生成するすべての Google Cloud サービスからカスタム イベントを作成できます。
このページでは、Pub/Sub トピックに転送されたログエントリから関数をトリガーする方法の例を示します。
Pub/Sub でトリガーされる関数のイベント構造
すべての Pub/Sub トリガー関数と同様に、Cloud Logging ログエントリによってトリガーされる関数は、data
パラメータが base64
でエンコードされた文字列である PubsubMessage
オブジェクトを受信します。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
次のように置き換えます。
REGION: 関数をデプロイする Google Cloud リージョン。例:
us-central1
--function
フラグには、サンプル ソースコードの関数のエントリ ポイントを指定します。これは、関数の実行時に Cloud Run が実行するコードです。このフラグには、ソースコード内に存在する関数名または完全修飾クラス名を指定する必要があります。--base-image
フラグには、関数のベースイメージ環境を指定します。ベースイメージと各イメージに含まれるパッケージの詳細については、ランタイム ベースイメージをご覧ください。
次のコマンドを実行して、イベントをフィルタするトリガーを作成します。
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 トリガーはサービス アカウントにリンクされ、関数を呼び出すときに ID として使用します。Eventarc トリガーのサービス アカウントには、関数を呼び出す権限が必要です。デフォルトでは、Cloud Run はデフォルトのコンピューティング サービス アカウントを使用します。
--event-filters
フラグには、トリガーがモニタリングするイベント フィルタを指定します。event-filters
フィルタにすべて一致するイベントが関数の呼び出しをトリガーします。各トリガーには、サポートされているイベントタイプを指定する必要があります。作成後にイベント フィルタのタイプを変更することはできません。イベント フィルタのタイプを変更するには、新しいトリガーを作成して古いトリガーを削除する必要があります。(省略可)さらにフィルタを追加するには、--event-filters
フラグを繰り返し、サポートされているフィルタをATTRIBUTE=VALUE
の形式で指定します。
Cloud ログエントリ
フィルタに一致する Cloud ログエントリが作成されると、Google Cloud コンソールの関数に対応するログエントリは次のようになります。
Method: METHOD Resource: projects/YOUR_GCLOUD_PROJECT/... Initiator: YOUR_EMAIL_ADDRESS