You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Packer convert函数时出现‘Missing key/value separator’错误求助

解决方法

你的问题出在两个地方:一是SSM参数存储的内容不是标准JSON格式,二是Packer代码里错误地用HCL对象语法包裹了参数值字符串。下面给出两种无需拆分多参数的解决方案:

方案1:将SSM参数改为标准JSON格式(推荐)

把SSM参数/devops/ami/base的内容修改为标准JSON:

{"name_prefix":"base","os":"AmazonLinux2"}

然后修改Packer代码,用jsondecode直接解析参数值:

data "amazon-parameterstore" "base" {
  name = "/devops/ami/base"
}

locals {
  parameters = jsondecode(data.amazon-parameterstore.base.value)
}

这样local.parameters就会是一个包含name_prefix和os的map,可以直接通过local.parameters.name_prefix、local.parameters.os引用。

方案2:不修改SSM参数内容,通过字符串转换处理

如果不想改动已存储的SSM参数内容,先把字符串里的=替换为JSON要求的:,再解析成map:

data "amazon-parameterstore" "base" {
  name = "/devops/ami/base"
}

locals {
  # 将非标准键值对转换为标准JSON格式
  normalized_json = replace(data.amazon-parameterstore.base.value, "=", ":")
  parameters = jsondecode(local.normalized_json)
}

错误原因说明

你原来的代码中,convert({data.amazon-parameterstore.base.value}, map(string))的写法错误:HCL里{}用来定义对象,要求内部是key = value的结构,但你直接把参数值字符串放进去,HCL无法识别为合法对象,因此抛出"Missing key/value separator"错误。

内容的提问来源于stack exchange,提问作者Steve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 14:02:12