AWS SDK for JavaScript v3 の練習。
- username(=email)
- password
- given_name
- family_name
が必須の Amazon Cognitoユーザプールに ユーザを追加し、 メールアドレスを承認済みにする スクリプト。
- Node.js(v18)で作りました。
- 適切な権限を持ったAWSアカウントが設定されてるものとする。
プロジェクトルートで
pnpm i
# or
npm i
した後
cp .env.example .env
vim .env
で環境設定して、
# commonJS version
node signup.cjs <username(=email)> <password>
# or (ES6 version)
node signup.mjs <username(=email)> <password>
# or (TypeScript version)
ts-node signup.ts <username(=email)> <password>
で実行。
- メール(=ユーザ名)は実在していなくてもいい(
aaa@example.com
など。@
は要る) - passwordはポリシーに従ったもの(「数字を含む」とかのアレ)を渡すこと。
説明用に AWS CLI で書くとこんな感じ。
aws cognito-idp sign-up \
--client-id <client-id> \
--username <username> \
--password <password> \
--user-attributes '[{"Name": "email", "Value": "<email-address>"}]' \
--user-pool-id <user-pool-id>
(user-attributesはCognitoユーザープールの必須項目にあわせて追加)
これだとメールが「認証済み」にならない(email_verifiedがいっぺんに設定できない)ので、
aws cognito-idp admin-update-user-attributes \
--user-pool-id <user-pool-id> \
--username <username> \
--user-attributes '[{"Name": "email_verified", "Value": "true"}]'
さらに
aws cognito-idp admin-confirm-sign-up
--user-pool-id <user-pool-id> \
--username <username>
sign-up はアプリケーションクライアントIDが引数なのに、 admin-update-user-attributes, admin-confirm-sign-up はプールIDが引数。
やっぱりNodejs入れて プロジェクト落として npm i
は面倒。
あとでnpxできるようにする(またはGoかRustにする)。
TypeScript版がanyだらけで気持ちが悪い。 まあ作成中に補完が効くのはありがたい。