具有可变数量操作的 Terraform Glue 触发器
Terraform Glue trigger with variable number of actions
我正在为 AWS Glue 触发器创建 Terraform 资源块,如下所示:
resource "aws_glue_trigger" "first_trigger" {
name = "first_trigger"
type = "CONDITIONAL"
workflow_name = "first_workflow"
enabled = true
actions {
job_name = "job_a"
}
actions {
job_name = "job_b"
}
actions {
job_name = "job_c"
}
}
如您所见,块中有多个 actions
,在此示例中为三个。在某些时候,我想让资源块更通用,涵盖几个 Glue 触发器。当我这样做时,不同情况下的动作数量会有所不同。所以我需要找到一种方法让它们可变。
我试过这个:
resource "aws_glue_trigger" "first_trigger" {
name = "first_trigger"
type = "CONDITIONAL"
workflow_name = "first_workflow"
enabled = true
actions {
count = length(var.jobs)
job_name = "${var.jobs[count.index]["name"]}"
}
}
上面的 var jobs
指的是一个 .tfvars 文件,如下所示:
jobs = [
{name="job_a"}
,{name="job_b"}
,{name="job_c"}
]
但这不起作用。 Terraform 不喜欢我尝试概括动作创建的方式。它给我错误 Error: Reference to "count" in non-counted context
是否有其他方法可以在我的 aws_glue_trigger
资源块中进行可变数量的操作? count
以外的其他类型的迭代器可以使它工作吗?
您正在寻找 dynamic block。它看起来像这样(未经测试):
resource "aws_glue_trigger" "first_trigger" {
name = "first_trigger"
type = "CONDITIONAL"
workflow_name = "first_workflow"
enabled = true
dynamic "actions" {
for_each = var.jobs
content {
job_name = actions.value.name
}
}
}
请注意语法有点奇怪。与资源中的 for_each
不同,您使用 each.key
或 each.value
访问值,在动态块中 each
被块名称替换(在这种情况下,actions
).这样您就可以嵌套动态块而不会 each
变得不明确。
我正在为 AWS Glue 触发器创建 Terraform 资源块,如下所示:
resource "aws_glue_trigger" "first_trigger" {
name = "first_trigger"
type = "CONDITIONAL"
workflow_name = "first_workflow"
enabled = true
actions {
job_name = "job_a"
}
actions {
job_name = "job_b"
}
actions {
job_name = "job_c"
}
}
如您所见,块中有多个 actions
,在此示例中为三个。在某些时候,我想让资源块更通用,涵盖几个 Glue 触发器。当我这样做时,不同情况下的动作数量会有所不同。所以我需要找到一种方法让它们可变。
我试过这个:
resource "aws_glue_trigger" "first_trigger" {
name = "first_trigger"
type = "CONDITIONAL"
workflow_name = "first_workflow"
enabled = true
actions {
count = length(var.jobs)
job_name = "${var.jobs[count.index]["name"]}"
}
}
上面的 var jobs
指的是一个 .tfvars 文件,如下所示:
jobs = [
{name="job_a"}
,{name="job_b"}
,{name="job_c"}
]
但这不起作用。 Terraform 不喜欢我尝试概括动作创建的方式。它给我错误 Error: Reference to "count" in non-counted context
是否有其他方法可以在我的 aws_glue_trigger
资源块中进行可变数量的操作? count
以外的其他类型的迭代器可以使它工作吗?
您正在寻找 dynamic block。它看起来像这样(未经测试):
resource "aws_glue_trigger" "first_trigger" {
name = "first_trigger"
type = "CONDITIONAL"
workflow_name = "first_workflow"
enabled = true
dynamic "actions" {
for_each = var.jobs
content {
job_name = actions.value.name
}
}
}
请注意语法有点奇怪。与资源中的 for_each
不同,您使用 each.key
或 each.value
访问值,在动态块中 each
被块名称替换(在这种情况下,actions
).这样您就可以嵌套动态块而不会 each
变得不明确。