Cloud LoggingのシンクからPub/SubのTopicにルーティングするには権限追加を忘れない。
ある特定のログをトリガーにfunctionやらCloudRunやらを動かすのに便利なログルータのシンクですが、宛先をPub/SubのTopicに指定しただけでは動きませんでした。 Pub/Sub Topic側で権限追加が必要でした。 エクスポート先の権限を設定する
Terraformで構築する際、google_pubsub_topicのオプションにはなかったので戸惑いました。
コンソール
シンクを作成すると、自動的にサービスアカウントが生成されます。
このSAをエクスポート先のPub/Sub Topicに追加します。
Terraform
resource "google_pubsub_topic" "topic-name" {
name = "topic-name"
message_retention_duration = "600s"
}
resource "google_pubsub_topic_iam_binding" "binding" {
topic = google_pubsub_topic.topic-name.name
role = "roles/pubsub.publisher"
members = [
"serviceAccount:{サービスアカウントID}"
]
}
これでログ出現時にpub/subにエクスポートされます。
参考ドキュメント
https://cloud.google.com/logging/docs/export/configure_export_v2#dest-auth https://cloud.google.com/pubsub/docs/access-control#roles https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/pubsub_topic_iam#google_pubsub_topic_iam_policy