我在AWS Secrets Manager中存储了一堆秘密(键/值)对。我尝试使用jq
来解析秘密:
aws secretsmanager get-secret-value --secret-id <secret_bucket_name> | jq --raw-output '.SecretString' | jq -r .PASSWORD
它检索存储在.PASSWORD
中的值,但是问题是我不仅要检索存储在value
中的key
,而且还希望在下面检索键/值方式:
KEY_1="1234"
KEY_2="0000"
.
.
.
so on...
通过运行以上命令,我无法以这种格式进行解析,而且对于每个键/值,我不得不多次运行此命令,这很繁琐。我是在做错什么,还是有更好的方法呢?
答案 0 :(得分:3)
这与python不相关,但与aws cli和jq的行为有关。我想出了类似的东西。
aws secretsmanager get-secret-value --secret-id <secret_name> --output text --query SecretString | jq ".[]"
字面意义上有数百种不同的格式。
aws cli本身有很多选项,可以使用--query
选项https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html
您要寻找的精确转换需要这样的东西:
aws secretsmanager get-secret-value --secret-id <secret_name> --output text --query SecretString \
| jq -r 'to_entries[] | [.key, "=", "\"", .value, "\"" ] | @tsv' \
| tr -d "\t"
必须有一些更好的方法!
答案 1 :(得分:0)
尝试下面的代码段。我倾向于将这些小辅助过滤器放入其自己的shell函数<3
tokv() {
jq -r 'to_entries|map("\(.key|ascii_upcase)=\"\(.value|tostring)\"")|.[]'
}
$ echo '{"foo":"bar","baz":"fee"}' | tokv
FOO="bar"
BAZ="fee"