Terraform:在创建资源时使用计数时,输出中的拆分函数会出错

Terraform: split function in output gives error when count is used while creating a resource

我正在通过在其中使用计数来创建资源。当我在输出中使用 split 函数时,它给我错误,而没有使用 split 的正常输出工作正常。

我现在 运行 在 stack=dev 上。我希望相同的资源不会在开发堆栈中创建,但它应该在生产堆栈中创建。我正在尝试以这种方式编写代码

下面是给出错误的代码

data "aws_cloudformation_stack" "some_name" {
      count = (local.stack == "dev" ? 0 : 1)
      name = "${local.stack}_some_name"
    }

output "public_alb_subnets" {
  value = split(",", "${data.aws_cloudformation_stack.some_name[*].outputs["PublicElbSubnets"]}")
 
}

它给我错误

错误:函数参数无效

  on managed_alb.tf line 138, in output "public_alb_subnets":
 138:   value = split(",", "${data.aws_cloudformation_stack.some_name[*].outputs["PublicElbSubnets"]}")
    |----------------
    | data.aws_cloudformation_stack.some_name is empty tuple

Invalid value for "str" parameter: string required.

然而下面是可行的

output "public_alb_security_groups" {
  value = [
    data.aws_cloudformation_stack.some_name[*].outputs["PublicElbSecurityGroup"],
    data.aws_cloudformation_stack.some_name[*].outputs["InternalElbSecurityGroup"]
  ]
}

我在网上尝试了很多不同的选项,但 none 其中的选项有效。我在这里做错了什么。即使使用 count.index 或 0 代替 * 也不起作用

您必须根据您的 devprod 环境使您的输出也有条件:

output "public_alb_subnets" {
  value = length(data.aws_cloudformation_stack.some_name) > 0 ? split(",", "${data.aws_cloudformation_stack.some_name[*].outputs["PublicElbSubnets"]}") : null 
}