我在AWS secrets Manager中存储了一堆秘密(密钥/值(对。我试图使用jq
将机密解析为:
aws secretsmanager get-secret-value --secret-id <secret_bucket_name> | jq --raw-output '.SecretString' | jq -r .PASSWORD
它检索.PASSWORD
中存储的值,但问题是我不仅想检索key
中存储的value
,还想以以下方式检索密钥/值:
KEY_1="1234"
KEY_2="0000"
.
.
.
so on...
通过运行上面的命令,我无法以这种格式进行解析,而且对于每个键/值,我都必须多次运行该命令,这很乏味。我做错了什么吗?或者有更好的方法吗?
这与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"
必须有更好的方法来做到这一点!!
尝试下面的片段。我倾向于将这些小助手过滤器放入它们自己的shell函数<3
tokv() {
jq -r 'to_entries|map("(.key|ascii_upcase)="(.value|tostring)"")|.[]'
}
$ echo '{"foo":"bar","baz":"fee"}' | tokv
FOO="bar"
BAZ="fee"