如何通过AWS CLI向Secrets Manager已有密钥追加新键值对
问题原因
AWS Secrets Manager 不存在原生的「追加键值对」API,put-secret-value 接口的行为是全量覆盖密钥存储的内容,直接传入仅包含新键值对的JSON对象时,原有所有键值对会被完全替换。
实现方案
要实现键值对追加,必须先读取密钥当前存储的完整JSON内容,将新键值对合并进原有JSON结构后,再把完整的合并结果通过put-secret-value回写。
最稳妥的方式是通过jq工具自动完成JSON解析、合并操作,避免手动编辑JSON出现格式错误,完整操作命令如下:
# 配置环境变量 SECRET_NAME="你的目标密钥名称/ARN" REGION="密钥部署的AWS区域" NEW_KEY="待追加的键名" NEW_VALUE="待追加的键对应值" # 拉取现有密钥 -> 合并新键值对 -> 回写更新 aws secretsmanager put-secret-value \ --secret-id $SECRET_NAME \ --region $REGION \ --secret-string "$(aws secretsmanager get-secret-value \ --secret-id $SECRET_NAME \ --region $REGION \ --query 'SecretString' \ --output text | jq --arg addKey "$NEW_KEY" --arg addVal "$NEW_VALUE" '. + {($addKey): $addVal}')"
注意事项
- 运行上述命令前请确保环境已安装
jq(轻量JSON命令行处理工具,可通过yum/apt/brew等包管理器直接安装) - 操作前建议先备份原有密钥内容,避免误操作导致数据丢失,备份命令:
aws secretsmanager get-secret-value \ --secret-id $SECRET_NAME \ --region $REGION \ --query 'SecretString' \ --output text > secret_backup_$(date +%Y%m%d).json
- 如果你的密钥使用自定义托管KMS密钥加密,上述命令会自动沿用原有加密配置,无需额外指定KMS参数
- 不建议手动复制拉取到的JSON内容编辑后回传,很容易出现JSON格式错误、漏写原有键值对等问题
内容的提问来源于stack exchange,提问作者Vishal
相关产品推荐
相关产品推荐

