Как правильно использовать сгенерированный пароль AWS для создания пользователя IAM в AWS CLI? - PullRequest
0 голосов
/ 17 сентября 2018

Я написал скрипт для: 1) генерации случайного пароля 2) создания нового пользователя IAM 3) настройки профиля входа для этого пользователя с использованием сгенерированного пароля.Ниже мой код в bash:

RANDOM_PASS=$(aws secretsmanager get-random-password --include-space --password-length 20 --require-each-included-type | jq '.RandomPassword' | tr -d '"')

aws iam create-user --user-name $USERID
aws iam create-login-profile --user-name $USERID --password $RANDOM_PASS --password-reset-required

, как вы можете видеть, я использовал jq, чтобы получить эту конкретную строку пароля, а затем обрезал ", чтобы я мог поместить ее в профиль create-login-profile. Но этовыглядит не очень элегантно, и я чувствую, что должен быть лучший способ сделать это. Любые предложения?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

Вам вообще не нужен JQ там.

Вместо:

aws secretsmanager get-random-password --include-space --password-length 20 \
  --require-each-included-type | jq '.RandomPassword' | tr -d '"'

Вам просто нужно:

aws secretsmanager get-random-password --include-space --password-length 20 \
  --require-each-included-type --output text

Команды CLI AWS позволяют переключаться между JSON и текстовым (и табличным) выводом, передавая ключ --output.

Что касается общей читабельности вашего скрипта, я также стараюсь избегать длинных строк, поэтому я бы изменил рефакторинг как что-то вроде:

RANDOM_PASS=$(aws secretsmanager get-random-password \
  --require-each-included-type \
  --password-length 20 \
  --include-space \
  --output text)

aws iam create-user --user-name $USERID

aws iam create-login-profile \ 
  --user-name $USERID \
  --password $RANDOM_PASS \
  --password-reset-required

Это просто личное предпочтение, очевидно.

0 голосов
/ 17 сентября 2018

Перепишите эту часть:

jq '.RandomPassword' | tr -d '"')

Кому:

jq -r '.RandomPassword'

-r означает вывод в необработанном виде без кавычек.

...