我正在部署来自terraform的爬虫数组,我希望同时部署一个包含2个或更多爬虫的列表。我使用的是foreach,但是对于dynamodb_target,我无法找到如何将它与特定的爬虫相关联,也就是说,爬虫1具有table_name 1作为dynamodb_target an等等。
main.tf
resource "aws_glue_crawler" "example" {
for_each = var.crawlerList
database_name = each.value.database_name
name = each.value.crawler_name
role = each.value.role
dynamodb_target {
path = var.table_name
}
}variables.tf
variable "table_name" {
type = string
description = "The name of the DynamoDB table to crawler."
}
variable "crawlerList" {
type = map(object({
database_name = string
crawler_name = string
role = string
}))
}var.tfvars
table_name = "ref_master_files"
crawlerList = {
fisrt = ({
database_name = "dm_web"
crawler_name = "example_one"
role = "xxxx"
}),
second = ({
database_name = "dm_web"
crawler_name = "example_two"
role = "xxxx"
}),
third = ({
database_name = "dm_web"
crawler_name = "example_third"
role = "xxxx"
}),
}结果

发布于 2022-10-13 01:03:19
很难得到你想要达到的目标,所以我有两个选择。
table_name。然后-为另一个值展开变量:variable "crawlerList" {
type = map(object({
database_name = string
crawler_name = string
role = string
table_name = string
}))
}table_names变量。那么,您需要的是匹配它们。--可能是这样的:
tables = ["table1", "table2"]
matches = {"table1": "first", "table2":"second"}然后你会像这样迭代:
resource "aws_glue_crawler" "example" {
for_each = var.matches
database_name = var.crawler_list[each.value].database_name
name = var.crawler_list[each.value].crawler_name
role = var.crawler_list[each.value].role
dynamodb_target {
path = var.tables[each.key]
}
}https://stackoverflow.com/questions/74048422
复制相似问题