Командная строка подключения к documentdb при смене пароля

Я использую documentdb с автоматическим изменением пароля с помощью секретного менеджера aws. Я хочу создать сценарий для быстрого подключения к базе данных через командную строку. Поскольку пароль часто меняется, это означает наличие команды, которая загрузит пароль из aws secerts и передаст его в строку подключения mongo. Я придумал этот ужасный лайнер для подключения к mongo:

mongo --ssl --host *my_host*:27017 --sslCAFile rds-combined-ca-bundle.pem --username admin --password `aws secretsmanager get-secret-value --secret-id documentDB_login | jq .SecretString | jq fromjson | jq .password`

Я уже запускал aws configure, и secretmanager правильно возвращает мой пароль.

Клянусь, сначала это сработало, но теперь оно не работает, говоря, что аутентификация не удалась, когда он пытается подключиться к моему экземпляру mongo. Если я повторю приведенный выше уродливый лайнер, чтобы увидеть результат вызова aws secretmanager, а затем скопировать и вставить эхо-ответ в мою командную строку, он подключается правильно, поэтому не уверен, почему функционально эквивалентная команда не работает.

Как я могу создать сценарий для простого подключения к documentdb через командную строку? Есть ли более чистый подход (желательно тот, который не требует установки yum jp) для этого?


person dsollen    schedule 30.07.2020    source источник


Ответы (1)


Я не могу точно сказать, почему ваша команда работала раньше, но не работает сейчас, но похоже, что она не удаляет двойные кавычки. Также AWS cli может выполнять синтаксический анализ JSON за вас, но, к сожалению, он не может анализировать вложенный JSON в самом секрете. Для этого вам все равно понадобится jq. Однако, объединив синтаксический анализ CLI JSON с jq, вы можете немного упростить его (хотя он не короче):

mongo --ssl --host *my_host*:27017 --sslCAFile rds-combined-ca-bundle.pem --username admin --password `aws secretsmanager get-secret-value --secret-id documentDB_login --query 'SecretString' --output text | jq -r .password`
person JoeB    schedule 31.07.2020