Terraform AWS DMS模块Kinesis端点未识别kinesis_settings报错排查
Terraform AWS DMS模块kinesis端点配置校验报错问题
报错信息
执行plan阶段触发如下错误:
│ Error: 1 error occurred: │ * kinesis_settings must be set when engine_name = "kinesis" │ │ │ │ with module.replicate_oltp.aws_dms_endpoint.this["rates_kinesis_target"], │ on .terraform/modules/replicate_oltp/main.tf line 160, in resource "aws_dms_endpoint" "this": │ 160: resource "aws_dms_endpoint" "this" {
排查目标:
- 定位terraform-aws-dms模块无法识别传入
kinesis_settings变量的根因 - 明确Terraform在plan阶段识别AWS DMS模块动态生成
aws_dms_endpoint资源结构与上下文的逻辑
环境版本信息
- DMS模块版本:1.5.1
- Terraform版本:v1.1.9,运行于linux_amd64架构
- AWS Provider版本:
module.replicate_oltp依赖hashicorp/aws provider版本 >= 4.6.0 - 前置操作:已启用Terraform工作区,已清除本地.terraform缓存
复现步骤
- 执行初始化命令:
terraform init -backend-config=envs/dev-main/backend.tf - 执行
terraform plan即可稳定复现上述报错
已确认现象与待解疑问
- 核心配置中已为kinesis类型目标端点传入完整
kinesis_settings块,包含service_access_role_arn、stream_arn等必填参数,符合官方文档要求的配置格式 - 排查中发现关键现象:注释掉
kinesis_settings中的service_access_role_arn参数后,terraform plan可正常执行,无上述校验报错 - 模块源码逻辑相关疑问:
engine_name字段与模块内对应引擎配置dynamic块的关联匹配逻辑不明确kinesis_settings动态块采用对象列表做for_each遍历的设计逻辑不明确,该写法从语法层面支持传入多个kinesis_settings配置块,与AWS DMS端点资源本身仅支持单块kinesis配置的规则存在冲突
内容的提问来源于stack exchange,提问作者AlexLordThorsen
相关产品推荐
相关产品推荐

