😪

TerraformでPub/Subのサブスクリプション作ろうとしたらハマった

2021/08/10に公開

やりたかったこと

pushサブスクリプションに以下のような認証認可のオプションがある。
https://cloud.google.com/pubsub/docs/push?hl=JA#authentication_and_authorization
これを有効にしたサブスクリプションをTerraformで作成したかった。

コード

resource "google_pubsub_topic" "topic" {
  name = "test-topic"
}

resource "google_pubsub_subscription" "subscription" {
  name  = "test-subscription"
  topic = google_pubsub_topic.topic.name

  expiration_policy {
    ttl = ""
  }

  push_config {
    push_endpoint = var.endpoint

    oidc_token {
      service_account_email = var.subscription_service_account_email
    }
  }
}

エラー

╷
│ Error: Error creating Subscription: googleapi: Error 500: A service error has occurred. Please retry your request. If the error persists, please report it. [code=e8c0]
│
│   with module.pubsub.google_pubsub_subscription.subscription,
│   on ../../modules/pubsub/main.tf line 9, in resource "google_pubsub_subscription" "subscription":
│    9: resource "google_pubsub_subscription" "subscription" {
│

このエラーでググってみてもよくわからない...

解決

    oidc_token {
      service_account_email = var.subscription_service_account_email
    }

で設定しているサービスアカウントが存在しないものだった。
正しいサービスアカウントを設定して解決。

Discussion