使用AWS CLI执行create-secret命令创建Secrets Manager时出现错误,请求协助排查问题
AWS Secrets Manager 创建命令报错的原因与修正方案
看起来你在创建Secrets Manager密钥时踩了几个常见的CLI语法坑,我帮你拆解下问题和修复方法:
错误点分析
--tags参数的格式错误- 你把参数名写成了
-- tags(中间多了空格),AWS CLI会把tags当成一个未知的独立选项,这是触发错误的直接原因之一。 - 就算去掉空格,你用JSON格式传标签的方式也不对。AWS CLI的
--tags参数要求用Key=键名,Value=键值的格式,多个标签之间用空格分隔,而不是直接传入JSON对象。另外你写的"sample=test"本身也是无效的JSON键值对,正确的应该是"sample":"test"。
- 你把参数名写成了
Shell环境下的引号转义问题
- 你用双引号包裹
--secret-string的JSON时,虽然做了转义,但在某些shell环境下可能还是会有解析问题,改用单引号包裹整个JSON字符串会更稳妥,避免繁琐的转义操作。
- 你用双引号包裹
修正后的命令
方案1:使用标准的--tags格式
aws secretsmanager create-secret \ --name sample_auth_aws_secret1 \ --description "My test secret created with the CLI." \ --tags Key=env,Value=dev Key=sample,Value=test \ --secret-string '{"clientId":"sample123","secret":"wjwjwjwjwjwjwjsjsjsj"}'
方案2:用JSON格式传入完整请求(适合复杂配置)
如果你更习惯用JSON来定义所有参数,可以用--cli-input-json参数,这样标签格式也符合你最初的写法:
aws secretsmanager create-secret --cli-input-json '{ "Name": "sample_auth_aws_secret1", "Description": "My test secret created with the CLI.", "Tags": [ {"Key": "env", "Value": "dev"}, {"Key": "sample", "Value": "test"} ], "SecretString": "{\"clientId\":\"sample123\",\"secret\":\"wjwjwjwjwjwjwjsjsjsj\"}" }'
为什么之前的命令报错?
因为-- tags的空格导致AWS CLI无法识别tags这个合法参数,进而把后面的env:dev、sample=test等内容都当成了未知的命令选项,同时--secret-string的解析也因为前面的错误受到影响,所以才会抛出那些"Unknown options"的提示。
内容的提问来源于stack exchange,提问作者Chintamani




