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

如何在Bash中合并SSM参数为name=value格式写入文件

合并AWS SSM参数提取为单命令解决方案

好问题!你完全可以通过单次API调用+一次性数据处理实现需求,既减少了AWS API请求次数,也避免了多命令拼接的冗余。

完整命令

aws ssm get-parameters-by-path --region eu-central-1 --path /dev/stagefirst/ --with-decryption | jq -r '.Parameters[] | "\(.Name | split("/")[-1])=\(.Value)"' > your-output-file.txt

命令拆解说明

我们一步一步看这个命令的作用:

  1. AWS API调用:和你原来的命令一致,获取指定路径下的所有SSM参数并解密。
  2. jq核心处理:
    • .Parameters[]:遍历返回结果中的每个参数对象
    • \(.Name | split("/")[-1]):将参数名称按/分割,直接取最后一段(替代你原来用sed截取后缀的操作)
    • =\(.Value):将处理后的参数名和参数值拼接成name=value格式
    • -r:让jq输出原始字符串(不带JSON引号)
  3. 写入文件:通过> your-output-file.txt将结果直接写入目标文件,替换成你实际需要的文件名即可。

可选:按参数名排序

如果需要像你示例中那样按参数名排序输出,可以在管道后追加sort命令:

aws ssm get-parameters-by-path --region eu-central-1 --path /dev/stagefirst/ --with-decryption | jq -r '.Parameters[] | "\(.Name | split("/")[-1])=\(.Value)"' | sort > your-output-file.txt

验证结果

用你提供的示例JSON输入,运行上述基础命令会输出:

param-password=password
param-username=username

(如果加了sort,就会得到你期望的param-username=username在前的顺序)

这种方案的优势在于:

  • 仅调用一次AWS SSM API,避免了两次请求的延迟和潜在的数据不一致风险
  • 所有数据处理逻辑在jq内部完成,无需额外调用sed等工具,更简洁高效

内容的提问来源于stack exchange,提问作者We are Borg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:02:27