使用JQ将JSON从AWS SSM转换为环境变量 [英] Convert JSON from AWS SSM to environment variables using jq

查看:19
本文介绍了使用JQ将JSON从AWS SSM转换为环境变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对此做了一些研究,感觉好像有80%左右,但由于拆分其中一个字符串,正在努力根据需要调整JQ输出。

我正在尝试将AWS SSM的JSON输出转换为环境变量。

AWS命令

aws ssm get-parameters-by-path 
--path /qa/es 
--with-decryption 
--query 'Parameters[*].{Name:Name,Value:Value}' 

输出

[
    {
        "Name": "/qa/es/AWS_ACCESS_KEY_ID",
        "Value": "ABC123"
    },
    {
        "Name": "/qa/es/AWS_SECRET_ACCESS_KEY",
        "Value": "abcdefghijkl"
    },
    {
        "Name": "/qa/es/ENDPOINT",
        "Value": "https://amazonaws.com"
    }
]

JQ所需的输出,请注意,我只在最后一个/之后的环境变量之后。在某些情况下,可能是/qa/es/thing/嵌套/ENV_VAR

AWS_ACCESS_KEY_ID=ABC123
AWS_SECRET_ACCESS_KEY=abcdefghijkl
ENDPOINT=https://amazonaws.com
有了这个之后,我就可以使用这里的答案来设置环境变量。Exporting JSON to environment variables

我得到的最接近的是

jq -r "map("(try(.Name |= split("/")))=(.Value|tostring)")|.[]" params.json

这给了我

{"Name":["","qa","es","AWS_ACCESS_KEY_ID"],"Value":"ABC123"}=ABC123
{"Name":["","qa","es","AWS_SECRET_ACCESS_KEY"],"Value":"abcdefghijkl"}=abcdefghijkl
{"Name":["","qa","es","ENDPOINT"],"Value":"https://amazonaws.com"}=https://amazonaws.com

接近,但不够近!有人能在这里给我指个方向吗?

推荐答案

使用-r命令行选项

.[]
| "(.Name|split("/")|.[-1])=(.Value)"

收益率:

AWS_ACCESS_KEY_ID=ABC123
AWS_SECRET_ACCESS_KEY=abcdefghijkl
ENDPOINT=https://amazonaws.com

这似乎符合您的要求,但这种方法有一个潜在的缺点,即它假定"="有一些东西,所以请小心!

这篇关于使用JQ将JSON从AWS SSM转换为环境变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆