Terraform使用aws_ssm_parameter数据源时遇配置错误求助
Terraform使用aws_ssm_parameter数据源时遇配置错误求助
你好呀,我来帮你解决这个Terraform配置的小问题~
先理下你的场景:你想把存着IP段的AWS SSM StringList参数用到Terraform里,现在卡在了数据源配置的报错上,报错提示说不能手动设置type字段,这个问题其实很好解决!
错误原因
Terraform的aws_ssm_parameter数据源不需要手动指定type参数,这个字段是数据源在读取SSM参数时自动识别并填充的,你手动配置反而会触发冲突,这就是你看到那个错误提示的原因。
修正步骤
- 修改
data.tf里的数据源配置:把多余的type = "StringList"删掉,只保留参数名称即可:
data "aws_ssm_parameter" "range_of_ips" { name = "range_of_ips" }
- 修正
locals.tf里的参数引用方式:你之前直接引用整个数据源对象是不对的,StringList类型的SSM参数,需要通过value属性来获取实际的IP列表(Terraform会自动把SSM的StringList转换成Terraform的列表类型):
locals { my_ip_ranges = data.aws_ssm_parameter.range_of_ips.value }
额外验证小技巧
如果你想确认是否正确获取到了IP列表,可以在代码里加个输出测试:
output "ip_ranges" { value = local.my_ip_ranges type = list(string) }
执行terraform plan或者terraform apply后,就能在输出里看到解析后的IP段列表啦。
另外补充个小细节:你的SSM StringList参数值不需要加引号,直接用逗号分隔IP段就行(比如192.168.15.0/24,172.17.2.0/22),Terraform会自动处理成正确的列表格式。
备注:内容来源于stack exchange,提问作者IS-Labber
相关产品推荐
相关产品推荐

