AWS Cognito 対話型スクリプトでユーザー作成してみた

AWS Cognito 対話型スクリプトでユーザー作成してみた:


はじめに

Cognitoを用いてユーザー認証基盤作成しています。

ユースケースではサインアップをサーバー側で行う仕様なので自前でユーザー作成する必要がありました。

はじめは

sh test.sh name email company-id 
といった形で引数でユーザー名等の必要な情報を渡していたのですが、

  • 引数の順番を忘れる
  • 引数を間違って入力した時に作成やめたい
などを感じたのでシェルスクリプトを用いて対話側でユーザー作成するプログラムを書くことにしました。

参考にしたサイトはこちらのQiita記事


コード

function AdminCreateUser() { 
 
  echo "----------------------------" 
  echo "ユーザー名を入力してください" 
  read username 
  echo "メールアドレスを入力してください" 
  read email 
  echo "company_idを入力してください" 
  read company_id 
 
 
  echo "  下記構成でユーザーを作成します。実行する場合は yes、実行をキャンセルする場合は no と入力して下さい." 
  echo "username:\t${username}" 
  echo "email:\t${email}" 
  echo "company_id:\t${company_id}" 
 
  read input 
 
  if [ -z $input ] ; then 
 
    echo "  yes または no を入力して下さい." 
    AdminCreateUser 
 
  elif [ $input = 'yes' ] || [ $input = 'YES' ] || [ $input = 'y' ] ; then 
 
    echo "  ユーザーを作成します" 
    aws cognito-idp admin-create-user --user-pool-id ap-northeast-1_hogehoge --username $username --message-action SUPPRESS --user-attributes Name=email,Value=$email Name=email_verified,Value=True Name=custom:company_id,Value=$company_id --desired-delivery-mediums  EMAIL --temporary-password Easy1pass 
    #セッションの取得 
    session=$(aws cognito-idp admin-initiate-auth --user-pool-id ap-northeast-1_hogehoge --client-id 6hogehoge --auth-flow ADMIN_NO_SRP_AUTH --auth-parameters USERNAME=$username,PASSWORD=Easy1pass | jq -r ".Session") 
    # パスワードの作成 
    password=$(pwgen -c 8 1) 
    aws cognito-idp admin-respond-to-auth-challenge   --user-pool-id ap-northeast-1_hogehoge   --client-id 6hogehoge --challenge-name NEW_PASSWORD_REQUIRED --challenge-responses NEW_PASSWORD=$password,USERNAME=$username --session $session 
 
    echo "  ユーザーを作成しました" 
    echo "  パスワードは ${password} です" 
 
  elif [ $input = 'no' ] || [ $input = 'NO' ] || [ $input = 'n' ] ; then 
 
    echo "  ユーザーの作成を中止します" 
    exit 1 
 
  else 
 
    echo "  yes または no を入力して下さい." 
    AdminCreateUser 
 
  fi 
 
} 
 
# シェルスクリプトの実行を継続するか確認します。 
AdminCreateUser 
内容こちらになります。

このスクリプトでは

1. ユーザーの作成

2. セッション情報の取得

3. 仮パスワードの更新

を行なっています。

CognitoはCLI等でユーザーを作成した場合はパスワードを再設定する必要があります。

そこを認証済みにするためにパスワードを再設定させるところまで実行させています。


注意

Macで使用する場合

brew install jq 
brew install pwgen 
でライブラリインストールする必要ありです


実行結果

---------------------------- 
ユーザー名を入力してください 
test 
メールアドレスを入力してください 
test@gmail.com 
company_idを入力してください 
t 
 
  下記構成でユーザーを作成します。実行する場合は yes、実行をキャンセルする場合は no と入力して下さい. 
username:   test 
email:  test@gmail.com 
company_id: t 
 
~~~作成ログ省略~~~ 
ユーザーを作成しました 
パスワードは dhXe3mer です 
 
こんな感じに出力されます。

これなら必要事項順番に記入するだけだし、間違えてもno選択すれば取り消せるので便利ですね


終わりに

シェルスクリプトあまり書いたことなかったのですが、結構色々なことできるんですね

ただもっと複雑になると何らかの言語使った方がいいのかな、、と思いました

AWS CLIは入力楽になりますが記述方で詰まってしまうことが多いので勉強して使いこなせるようになりたいですね、それでは!!!

コメント

このブログの人気の投稿

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-04-30 23:37:32 RSSフィード2021-04-30 23:00 分まとめ(42件)

投稿時間:2023-02-05 02:09:04 RSSフィード2023-02-05 02:00 分まとめ(9件)