手动创建 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 项目上创建案例之前,我想我会在这里发帖,看看我是否遗漏了什么。
答案1
根据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 = ""
}
}