如何通过Terraform同时创建关联对应DynamoDB表的Glue爬虫
解决Terraform中Glue爬虫与DynamoDB表一一关联的问题
当前代码中所有爬虫共用同一个var.table_name值,导致无法实现爬虫与表的一一对应。只需将表名信息整合到爬虫配置列表中,让循环时每个爬虫能获取专属的表名即可解决问题。
步骤1:修改变量定义
更新variables.tf,把table_name字段加入crawlerList的对象结构,同时移除单独的table_name变量:
variable "crawlerList" { type = map(object({ database_name = string crawler_name = string role = string table_name = string # 新增表名字段,用于绑定专属DynamoDB表 })) }
步骤2:更新变量配置
在var.tfvars中,为每个爬虫条目添加对应的DynamoDB表名:
crawlerList = { first = ({ database_name = "dm_web" crawler_name = "example_one" role = "xxxx" table_name = "ref_master_files_1" # 爬虫1对应的表名 }), second = ({ database_name = "dm_web" crawler_name = "example_two" role = "xxxx" table_name = "ref_master_files_2" # 爬虫2对应的表名 }), third = ({ database_name = "dm_web" crawler_name = "example_third" role = "xxxx" table_name = "ref_master_files_3" # 爬虫3对应的表名 }), }
步骤3:调整爬虫资源代码
修改main.tf中的dynamodb_target部分,引用当前循环条目中的table_name字段:
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 = each.value.table_name # 绑定当前爬虫专属的DynamoDB表 } }
完成以上修改后,每个Glue爬虫会关联配置中指定的对应DynamoDB表,实现一一匹配的需求。
内容的提问来源于stack exchange,提问作者Leonardo Arango
相关产品推荐
相关产品推荐

