Получить секреты из AWS Менеджер секретов - PullRequest
0 голосов
/ 02 мая 2020

У меня есть несколько пар секретов (ключ / значение), хранящихся в 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...

Запустив указанную выше команду, я не могу выполнить синтаксический анализ в этом формате, а также для каждого ключа / значения, который я должен выполнить, этой команды. много раз, что утомительно. Я делаю что-то не так или есть лучший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Это не относится к python, но больше относится к поведению aws cli и jq. Я придумываю что-то вроде этого.

aws secretsmanager get-secret-value --secret-id <secret_name> --output text --query SecretString | jq ".[]"

Существует буквально сотня различных способов отформатировать что-то вроде этого.

aws У cli есть много опций для фильтрации вывода с использованием --query option 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"

Должен быть лучший способ сделать это !!

0 голосов
/ 03 мая 2020

Попробуйте фрагмент ниже. Я склонен помещать эти маленькие вспомогательные фильтры в их собственную функцию оболочки <3 </p>

tokv() {
  jq -r 'to_entries|map("\(.key|ascii_upcase)=\"\(.value|tostring)\"")|.[]'
}

$ echo '{"foo":"bar","baz":"fee"}' | tokv
FOO="bar"
BAZ="fee"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...