从 AWS Secrets Manager 检索机密
Retrieve secrets from AWS Secrets Manager
我有一堆秘密 (key/value) 对存储在 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/value ] 以下列方式:
KEY_1="1234"
KEY_2="0000"
.
.
.
so on...
通过 运行 上面的命令我无法解析这种格式,而且对于每个 key/value 我必须多次 运行 这个命令,这很乏味。我是做错了什么还是有更好的方法?
这与 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"
我有一堆秘密 (key/value) 对存储在 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/value ] 以下列方式:
KEY_1="1234"
KEY_2="0000"
.
.
.
so on...
通过 运行 上面的命令我无法解析这种格式,而且对于每个 key/value 我必须多次 运行 这个命令,这很乏味。我是做错了什么还是有更好的方法?
这与 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"