При создании подписки 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 = ""
}
}