gpt4 book ai didi

terraform - 链接到在 Terraform 中使用计数创建的资源

转载 作者:行者123 更新时间:2023-12-05 01:24:38 34 4
gpt4 key购买 nike

如何链接到使用计数创建的资源?或者如果我想将额外的资源链接到它们,我不应该用 count 创建它们吗?按照下面的方式进行,在初始资源中使用 count 并在链接资源中使用 for_each 会出现以下错误:

The given "for_each" argument value is unsuitable: the "for_each" argument must be a map, or set of strings, and you have provided a value of type number.

我明白为什么会出现这个错误,但我也对这里的最佳实践感到困惑。

resource "aws_wafv2_web_acl" "waf_acl_regional" {
count = var.env == "prod" ? 1 : 0
name = "${var.project}-${var.env}"
description = "A simple WAF ACL for ${var.env} environment."
scope = "REGIONAL"

default_action {
allow {}
}

rule {
...
}

visibility_config {
...
}
}

resource "aws_wafv2_web_acl_association" "example" {
for_each = aws_wafv2_web_acl.waf_acl_regional
resource_arn = aws_lb.hasura.arn
web_acl_arn = each.value.arn
}

感谢您的帮助!

最佳答案

您已指示 aws_wafv2_web_acl 资源使用 count 元参数 [1],顾名思义,它使用数字。它创建一个数组,您可以在其中通过引用数组的元素来访问元素。在您的情况下,这将是 aws_wafv2_web_acl.waf_acl_regional[0]。另一方面,for_each 元参数 [2] 使用键/值对。这意味着为了获取一个值,您必须有一个键,该键将用作对值的引用。例如,类似于 aws_wafv2_web_acl.waf_acl_regional["prod"]。这进一步意味着 var.env 必须是 mapset [3] 类型。这些类型是 Terraform 中的复杂类型。


[1] https://www.terraform.io/language/meta-arguments/count

[2] https://www.terraform.io/language/meta-arguments/for_each

[3] https://www.terraform.io/language/expressions/type-constraints#complex-types

关于terraform - 链接到在 Terraform 中使用计数创建的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71335928/

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