【发布时间】:2025-12-22 11:20:08
【问题描述】:
尝试使用 JQ 生成 AWS 参数文件以用于调用 CloudFormation
aws cloudformation create-stack --stack-name test --parameters file://params.json --template-body file://cfn.yaml
我正在考虑采用这样的模板:
'[{"ParameterKey":"KEY","ParameterValue":"VALUE","UsePreviousValue":false}]'
然后在 JQ 中添加一些参数并尝试对 arg 进行一些字符串操作,例如 jq --arg params 'key1,value1:key2,value2' 然后拆分 ':' 以复制它并用逗号分隔值。
我能做的最好的事情是提前创建正确数量的*节点,然后进行静态替换,分别提供每个参数。不够动态,甚至不能打扰 - 最好只编写一个 bash 脚本并在循环中进行替换。
任何帮助将不胜感激。
目前我能做的最好的就是这个
echo '[{"ParameterKey":"KEY","ParameterValue":"VALUE","UsePreviousValue":false}]' | jq --arg vars "key1,val1:key2,val2" '.[0].ParameterKey = ($vars|split(":")|.[]|split(",")|.[0]) | .[0].ParameterValue = ($vars|split(":")|.[]|split(",")|.[1])'
但输出是所有值的组合(例如 key1 val1、key1 val2 等)
【问题讨论】:
标签: amazon-web-services amazon-cloudformation jq