🔖
AWS Cognitoで、AWS CLI でユーザを作りパスワードを設定してCONFIRMEDにする
Coginitoのユーザプールは、AWSのコンソール画面からユーザを作成できるものの、仮パスワードを設定してユーザにパスワードを強制変更してもらわないといけないのでだるいです。
開発者や管理画面のユーザなどのためにWebUIを用意したり、対象者に「メール送りました〜」「仮パスワードはxxxxなので変えてください〜」ってやるのもだるいので、AWS CLIを使って設定してみます。
参考はこちら:
まず、対象のCognito UserPoolのIDを調べます
$ aws cognito-idp list-user-pools --max-results 20 | jq ".UserPools[] | {Id, Name}"
{
"Id": "ap-northeast-1_XXXXX",
"Name": "peoject_hoge_userpool_XXXXX"
}
対象PoolのIDがわかったら、admin-create-user
でIDを指定してユーザを作成します。
ユーザ属性はEメールだけにしていますが、環境によって変えてください。
ここではメールは認証済み、--message-action SUPPRESS
のオプションによって対象ユーザへの通知を止めます。
$ aws cognito-idp admin-create-user \
--user-pool-id "ap-northeast-1_XXXXX" \
--username "hogefuga@example.com" \
--user-attributes Name=email,Value="hogefuga@example.com" Name=email_verified,Value=true \
--message-action SUPPRESS
すると、こんな感じでユーザが作成されます。
{
"User": {
"Username": "XXXXXXXXXXXX-XXXX-XXX-XXX-XXXXXXXXXXXX",
"Attributes": [
{
"Name": "sub",
"Value": "XXXXXXXXXXXX-XXXX-XXX-XXX-XXXXXXXXXXXX"
},
{
"Name": "email_verified",
"Value": "true"
},
{
"Name": "email",
"Value": "hogefuga@example.com"
}
],
"UserCreateDate": "2021-05-27T11:08:27.685000+09:00",
"UserLastModifiedDate": "2021-05-27T11:08:27.685000+09:00",
"Enabled": true,
"UserStatus": "FORCE_CHANGE_PASSWORD"
}
}
このとき、ステータスが FORCE_CHANGE_PASSWORD
となっているため、このままではログインできません。admin-set-user-password
を使ってパスワードを設定します。ユーザプールID、ユーザネーム、パスワードをそれぞれ指定しましょう。ポイントは --permanent
オプションで、これによって恒久化しています。なお --no-permanent
にすると仮パスワードになります。
$ aws cognito-idp admin-set-user-password \
--user-pool-id "ap-northeast-1_XXXXX" \
--username "XXXXXXXXXXXX-XXXX-XXX-XXX-XXXXXXXXXXXX" \
--password 'p@ssw0rd' \
--permanent
もう一度ユーザを確認してみましょう。 admin-get-user
で確認できます。
$ aws cognito-idp admin-get-user \
--user-pool-id "ap-northeast-1_XXXXX" \
--username "XXXXXXXXXXXX-XXXX-XXX-XXX-XXXXXXXXXXXX"
{
"User": {
"Username": "XXXXXXXXXXXX-XXXX-XXX-XXX-XXXXXXXXXXXX",
"Attributes": [
{
"Name": "sub",
"Value": "XXXXXXXXXXXX-XXXX-XXX-XXX-XXXXXXXXXXXX"
},
{
"Name": "email_verified",
"Value": "true"
},
{
"Name": "email",
"Value": "hogefuga@example.com"
}
],
"UserCreateDate": "2021-05-27T11:08:27.685000+09:00",
"UserLastModifiedDate": "2021-05-27T11:08:27.685000+09:00",
"Enabled": true,
"UserStatus": "CONFIRMED"
}
}
ステータス CONFIRMED
になっています。これで ユーザ名hogefuga@example.com
、パスワード p@ssw0rd
でログインできるようになります。
Discussion