Terraform配置AWS Glue Crawler:如何让每个爬虫仅爬对应路径?
问题修正方案
你的问题核心是每个Glue爬虫错误引用了全局所有路径集合,未绑定到各自配置对应的paths。以下是修正后的代码及关键调整说明:
修正后的glue/main.tf
resource "aws_glue_crawler" "example" { for_each = var.config database_name = each.key name = each.key role = var.my_role dynamic "s3_target" { # 遍历当前爬虫对应的paths列表,而非全局所有路径 for_each = toset(each.value.paths) content { path = s3_target.value } } }
关键调整点
- 移除多余的
local.elements:该变量将所有配置路径扁平化合并,导致每个爬虫加载全部路径,完全无需保留。 - 调整
dynamic "s3_target"的for_each:直接使用each.value.paths(转换为toset集合类型,符合Terraform对for_each的要求),确保每个爬虫仅遍历自身配置的路径。 - 修复语法错误:
- 补全
dynamic "s3_target"的引号与闭合大括号 - 修正
name = each_key为name = each.key - 修正
path = s3_target.value.topic为path = s3_target.value(遍历的是paths中的字符串元素,不存在topic字段)
- 补全
验证效果
修正后:
- content1爬虫生成4个s3_target,对应路径a、b、c、d
- content2爬虫生成1个s3_target,对应路径e
内容的提问来源于stack exchange,提问作者Omega
相关产品推荐
相关产品推荐

