gpt4 book ai didi

terraform - Terraform 0.12 模块中的可选资源

转载 作者:行者123 更新时间:2023-12-05 03:58:28 26 4
gpt4 key购买 nike

我将 Terraform 从 0.11 迁移到 0.12。我有一个模块应该配置 AWS SQS 队列和可选的死信队列。

我的仓库是 here

我在队列资源上有以下条件:

resource "aws_sqs_queue" "regular_queue_with_dl" {
count = var.attach_dead_letter_config ? 1 : 0

redrive_policy = var.attach_dead_letter_config ? data.template_file.regular_queue_redrive_policy[count.index].rendered : null
...
}

第一次运行时 attach_dead_letter_config=true 队列是用 DLQ 创建的,但是当我想删除 DLQ (attach_dead_letter_config=false) 时,问题出现在 terraform plan 是运行:

Error: Invalid index

on modules/sqs/sqs.tf line 67, in resource "aws_sqs_queue" "regular_queue_with_dl":
67: redrive_policy = var.attach_dead_letter_config ? data.template_file.regular_queue_redrive_policy[count.index].rendered : null
|----------------
| count.index is 0
| data.template_file.regular_queue_redrive_policy is empty tuple

在模块中创建这种可选资源的正确方法是什么?

最佳答案

根据资源的命名方式,这看起来像是 Terraform 0.11 解决方法的一个示例,其中有两个 resource block 具有相反的 count 值,因此只有一次创建一个,以便在两组不同的参数之间进行选择。

在 Terraform 0.12 中不再需要该解决方法,因为您可以在不需要的情况下将 redrive_policy 设置为 null。您还可以将 template_file 替换为对 the templatefile function 的调用在 Terraform 0.12 中,保持一切独立:

resource "aws_sqs_queue" "regular_queue" {
redrive_policy = var.attach_dead_letter_config ? templatefile(
"${path.module}/redrive_policy.tmpl", {
# (...whatever you had in "vars" in the template_file data resource...)
},
) : null
...
}

将资源参数设置为 null 等同于在 Terraform 0.12 中完全省略它。

关于terraform - Terraform 0.12 模块中的可选资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57908294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com