Terraform:如何有条件地将过滤器添加到数据源

ade*_*ino 3 amazon-web-services terraform

给定数据源定义:

data "aws_ami" "my_ami" {
  filter {
    name   = "name"
    values = ["my_ami_name"]
  }
}
Run Code Online (Sandbox Code Playgroud)

仅当条件为真时,如何添加第二个过滤器?

我想要的示例伪代码:

data "aws_ami" "my_ami" {
  filter {
    name   = "name"
    values = ["my_ami_name"]
  }
  var.state ? filter {
    name   = "state"
    values = [var.state]
  } : pass
}
Run Code Online (Sandbox Code Playgroud)

仅当状态变量有内容时才会使用第二个过滤器。

请注意,我不想使用“N/A”值来始终使用第二个过滤器,无论是否需要它。

Mar*_*cin 5

您可以使用动态块。条件完全取决于你的条件(var.state没有显示,所以我不知道它是什么),但一般来说你可以这样做:

data "aws_ami" "my_ami" {

  filter {
    name   = "name"
    values = ["my_ami_name"]
  }

  dynamic "filter" {
    for_each = var.state ? [1] : []
    content {
      name   = "state"
      values = [var.state]    
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)