Terraform 在“计数”中设置多个变量

Posted

技术标签:

【中文标题】Terraform 在“计数”中设置多个变量【英文标题】:Terraform Set More than one variable in "Count" 【发布时间】:2022-01-11 20:12:01 【问题描述】:

我正在使用以下代码:

data "aws_secretsmanager_secret_version" "test1" 
  count = var.test123.load_from_secrets_manager?1:0
   secret_id = "test1"

现在,当我运行 terraform init 没有任何错误时,它可以正常工作。

现在,我的问题是我需要在同一个数据部分下添加一个新变量,比如

data "aws_secretsmanager_secret_version" "test1" 
  count = var.test123.load_from_secrets_manager?1:0
  count = var.test456.load_from_secrets_manager?1:0
   secret_id = "test1"

当我对此运行 terraform init 时,我得到了错误:

The argument "count" was already set. Each argument may be set only once.

我需要想办法在 SAME COUNT 中添加两个或更多变量。任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

您在这里真正想要完成的是指定两个条件,它们结合起来确定data 块是否应该尝试执行READ。您可以通过组合逻辑来做到这一点:

data "aws_secretsmanager_secret_version" "test1" 
  count = (var.test123.load_from_secrets_manager && var.test456.load_from_secrets_manager) ? 1 : 0
  secret_id = "test1"

您可能还想更新它以改用for_each 元参数:

data "aws_secretsmanager_secret_version" "test1" 
  for_each = (var.test123.load_from_secrets_manager && var.test456.load_from_secrets_manager) ? toset(["test1"]) : []
  secret_id = "test1"

【讨论】:

以上是关于Terraform 在“计数”中设置多个变量的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Terraform 在 GKE 中设置非默认服务帐户?

在 Terraform 的 aws_ecs_task_definition 资源中设置 ulimit 堆栈大小

在 Spring Security UsernamePasswordAuthenticationFilter JWT 身份验证中设置自定义登录 url

Terraform 多个 cloudwatch 事件触发相同的 lambda 函数

如何在 JavaScript 中设置多个值以列出值

使用 terraform 将 EC2 自己的 IP 添加为入站规则