を使用してみる
Windows 11にて
Cognitoの設定は
・ユーザ名はメアド
・SMSは使用しない
・メアド・パスワードのみ保持 (他に必要なユーザ属性あれば別DBに保持)
とする
ユーザ一覧取得はCognitoのクライアントとしての接続方法は見つけられず、IAMでのアクセスとなる
(実案件ではCognitoのメンテナンス目的でしか使わないかも、しかし今回は最初の一歩ということでここから始めてみることとする)
AWS Cognitoユーザープール
- aws.amazon.comにサインアップ/ログイン
- コンソールのホームからCognitoサービスへ移動
- [ユーザープールの管理]押下
- [ユーザープールを作成する]押下
- ステップ1 サインインエクスペリエンス
- サインインオプション:Eメールのみ
- 他:デフォルト
- ステップ2 セキュリティ要件
- ステップ3 サインアップエクスペリエンス
- すべてデフォルト
- ステップ4 メッセージ配信
- Eメールプロバイダー:Cognito
- 他:デフォルト
- ステップ5 アプリケーション統合
- プール名:MyUserPool
- アプリタイプ:秘密クライアント
- アプリクライアント名:MyAppClient
- 他:デフォルト
- ユーザープールIDの値をメモっておく ★1
AWS ユーザー、アクセスキー
- AWSコンソールのホームからIAMサービスへ移動
- 左ペインのユーザー
- 右上のユーザーを追加
- ステップ1
- ユーザー名:MyCognitoUser
- AWS 認証情報タイプを選択:アクセスキー
- ステップ2
- アクセス許可の設定:既存のポリシーを直接アタッチ
- ポリシー:AmazonCognitoPowerUserのみ選択
- アクセス権限の境界の設定:アクセス権限の境界を設定せずに user を作成する
- ステップ3、4
- なし
- ステップ5
- .csvのダウンロード ★2
- ステップ1
AWS SDK for JavaScript v3でアクセス
- Node.jsをインストールする → https://nodejs.org/ja/
- 以下コマンドプロンプトで作業
- 作業フォルダ作成、移動、AWS SDK for JavaScript v3インストール
mkdir myprj1 cd myprj1 npm install @aws-sdk/client-cognito-identity-provider
- 作業フォルダのpackage.jsonに
"type": "module",
を追記package.json{ "type": "module", "dependencies": { "@aws-sdk/client-cognito-identity-provider": "^3.245.0" } }
- 作業フォルダに以下のファイルを作成 → 使用クラス https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-cognito-identity-provider/classes/listuserscommand.html
list-users.js
import { CognitoIdentityProviderClient, ListUsersCommand } from "@aws-sdk/client-cognito-identity-provider"; const cognitoClient = new CognitoIdentityProviderClient({ region: '<東京リージョンならap-northeast-1>' }); const response = await cognitoClient.send(new ListUsersCommand({ UserPoolId: '<★1の値>' })); console.log(response);
- 実行
set AWS_ACCESS_KEY_ID=<★2の値> set AWS_SECRET_ACCESS_KEY=<★2の値> node list-users.js
おまけ - 環境変数設定自動化
- dotenvインストール
npm install dotenv
- list-users.jsファイルの先頭に以下を記述
import * as dotenv from 'dotenv' dotenv.config();
- 作業フォルダに以下のファイルを作成
.env
AWS_ACCESS_KEY_ID=<★2の値> AWS_SECRET_ACCESS_KEY=<★2の値>
今後
ListUsersCommand以外も使ってユーザ登録や認証等を実施
Webアプリ化(ユーザ登録画面や認証画面)
続き