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

Bash中解析AWS Secrets Manager带转义JSON字符串并赋值给变量

AWS Secrets Manager 密钥提取与Shell变量导入方案

转义问题解决方法

你遇到的转义符问题是因为jq默认输出字符串时会自动添加外层双引号并转义特殊字符,添加-r(raw output)参数即可直接输出无转义的原始内容。

1. 提取无转义的SecretString JSON内容

执行如下命令即可得到标准JSON格式的密钥键值对:

aws secretsmanager get-secret-value --secret-id snowflake-access-uat | jq -r '.SecretString'

输出结果无任何转义符:

{"sf-user":"USER_123_ADMIN","sf-password":"FooBaarPassword","sf-db":"MY_SPL_DB","wh_name":"JOB_EXECUTOR","sf-role":"JOB_EXECUTOR_ROLE","sf-account":"icy-party"}

2. 批量导入密钥为当前Bash会话变量

不需要安装任何第三方工具,以下命令兼容CodeBuild全新运行实例的自动化场景,直接把所有密钥键值对导出为当前会话的环境变量:

eval "$(aws secretsmanager get-secret-value --secret-id snowflake-access-uat | jq -r '.SecretString | fromjson | to_entries[] | "export \(.key)=\(.value|@sh)"')"

命令逻辑说明:

  • jq -r 输出原始字符串,自动去除外层引号和转义符
  • fromjson 将SecretString存储的JSON字符串解析为可遍历的JSON对象
  • to_entries[] 把所有键值对拆分为数组循环处理
  • @sh 自动对变量值做Shell安全转义,避免值内含空格、特殊符号时导出报错
  • 生成的export语句通过eval执行,所有变量直接在当前Bash会话生效

3. 可选优化(适配Bash变量名规范)

Bash环境变量名不允许使用横杠,如果你需要把密钥键名中的横杠自动替换为下划线,可使用调整后的命令:

eval "$(aws secretsmanager get-secret-value --secret-id snowflake-access-uat | jq -r '.SecretString | fromjson | to_entries[] | "export \(.key|gsub("-";"_"))=\(.value|@sh)"')"

执行后变量名将自动转为sf_user、sf_password等符合Bash规范的格式,调用更安全。

效果验证

执行完成后直接打印对应变量即可验证是否生效:

echo $sf_user
echo $sf_password

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:27:03