Назад | Перейти на главную страницу

Установите для срока действия подписки PubSub значение Never Expire через Terraform

При создании подписки PubSub вручную у вас есть возможность установить срок действия как «Никогда не истекать». Пример:

Я пытаюсь управлять своей облачной инфраструктурой через Terraform. Срок действия по умолчанию составляет 31 день. У меня есть несколько подписок, где вполне возможно, что в течение 31 дня не произойдет никаких действий, и я не хочу, чтобы подписка исчезла в этом случае.

Вот пример настройки свойства из документации Terraform:

expiration_policy {
  ttl = "300000.5s"
}

Чего здесь не говорится, так это о том, как установить бессрочный срок действия политики. Смотря на документация GCP API он указывает на следующую структуру:

"expirationPolicy": {
  object (ExpirationPolicy)
},

Если я нажму на ExpirationPolicy то вижу кое-что интересное:

Если ttl не установлен, срок действия связанного ресурса никогда не истечет.

Это заставляет меня думать, что я должен просто отправить пустую политику истечения срока действия:

expiration_policy {
}

Но это дает мне следующую ошибку:

Error: Missing required argument

  on main.tf line 39, in resource "google_pubsub_subscription" "mct_bloodrelay_staging":
  39:   expiration_policy {

The argument "ttl" is required, but no definition was found.

Я думаю, что это проблема terraform, поскольку в документации указывается, что ttl может быть опущен, и похоже, что terraform требует этого. Но прежде, чем я создам кейс по проекту Github, я решил, что опубликую здесь, чтобы узнать, не упускаю ли я чего-то.

По Документация Terraform для подписки на pusub ttl параметр является обязательным. Единственный способ обойти это - установить для него пустую строку -

  expiration_policy {
    ttl = ""
  }

Обновлено: пример определения полного ресурса подписки pubsub -

  resource "google_pubsub_subscription" "test-sub" {
  name  = "test-sub"
  topic = "projects/PROJECT_ID/topics/TOPIC_NAME"
  expiration_policy {
    ttl = ""
  }
}