通过 Terraform 将 PubSub 订阅到期日期设置为永不过期

通过 Terraform 将 PubSub 订阅到期日期设置为永不过期

手动创建 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 = ""
  }
}

相关内容