使用vault kv put导入JSON至Vault时遇无效键值对错误
解决Vault KV Put导入JSON文件的错误问题
错误原因分析
第一个错误:
Failed to parse K=V data: invalid key/value pair "@file.json": json cannot unmarshal array into Go value of type map[string] interface {}
Vault的kv put命令默认要求导入的JSON内容是键值对结构(对象类型),但你的file.json内容是数组格式,无法被解析为键值对。第二个错误:
Failed to parse K=V data: invalid key/value pair "file.json": format must be key=value
直接传入file.json时,Vault需要明确的key=value格式,你只提供了文件名,不符合命令参数要求。
解决方法
方法1:修改JSON文件为键值对结构
将你的数组内容包裹在一个对象中,给数组指定一个键,比如:
原数组格式file.json:
["foo", "bar", "baz"]
修改为:
{ "my_list": ["foo", "bar", "baz"] }
然后执行命令:
vault kv put secrets/path @file.json
(-format=json是控制命令输出的格式,和输入解析无关,可根据需要添加)
方法2:不修改JSON文件,直接在命令中指定键
如果不想调整JSON文件,可通过命令将数组内容绑定到一个键上:
vault kv put secrets/path my_list="$(cat file.json)"
该命令会把file.json中的数组内容以字符串形式存储在my_list键下。
额外注意
确保你使用的是KV v2引擎(默认是v2),如果是KV v1,命令逻辑一致,核心要求都是存储的数据需符合键值对结构。
内容的提问来源于stack exchange,提问作者Hallo
相关产品推荐
相关产品推荐

