やりたいこと
前回の記事(https://qiita.com/mkttks/items/b0f7d4b2b6756e7ed3c8 )で作ったWebサイトにログイン機能を実装します。AWS Cognitoを使えばログイン機能が実装できます。
内容は引き続き下記の公式チュートリアルに沿ったものです。
https://aws.amazon.com/jp/getting-started/hands-on/build-serverless-web-app-lambda-apigateway-s3-dynamodb-cognito/
システム構成図
公式チュートリアルから引っ張ってきた図だとこんな感じです。
手順
ユーザプールを準備する
Cognitoでユーザプールを作成します。
ユーザプールとはユーザのIDやパスワードを覚えておくセットみたいなものです(たぶん)。
AWS Cognitoにログイン
ユーザプールを作成
- 「ユーザープール」->「ユーザープールを作成」をクリック
- 「サインインエクスペリエンスを設定」->「認証プロバイダー」->「Cognito ユーザープールのサインインオプション」で「Eメール」にチェックを入れる(他のチェックは外す)
- 「次へ」をクリック
- 「セキュリティ要件を設定」->「多要素認証」->「MFAなし」にチェックを入れる
(MFAを設定したい場合は他の選択肢を選べばよさそうです。自分はまだ試してません)
- 他デフォルトのまま「次へ」をクリック
- 「サインアップエクスペリエンスを設定」はすべてデフォルトのまま「次へ」をクリック
- 「メッセージ配信を設定」->「Eメール」->「Eメールプロバイダー」->「CognitoでEメールを送信」にチェックを入れる
- 「送信先のEメールアドレス」はデフォルトのままでOK(このメールアドレスから認証コードが飛んできます。メール受信拒否の設定をしている場合はご注意ください。)
- 「アプリケーション統合」->「ユーザープール名」->「ユーザープール名」に任意の名前を入力(ここではWildRydesとします)
- 「最初のアプリケーションクライアント」->「アプリケーションクライアント名」に任意の名前を入力(ここではWildRydesWebAppとします)
- 他デフォルトのまま「次へ」をクリック
- 「確認および作成」で大丈夫そうなら「ユーザープールを作成」をクリック
ユーザプールのIDを確認する
後で必要になるユーザプールIDとユーザプールクライアントIDをメモします。
ユーザープールIDを確認
「ユーザープールの概要」にユーザープールIDがあるのでメモします。
ユーザープールクライアントIDを確認
「アプリクライアントと分析」にユーザープールクライアントIDがあるのでメモします。
ログイン機能を実装する
それではユーザプールを使ってログイン機能を実装します。サンプルコードにはユーザプールの情報以外はあらかじめ実装されています。
あらためてサンプルコードを取得したい方はこちらからどうぞ
aws s3 cp s3://wildrydes-us-east-1/WebApplication/1_StaticWebHosting/website ./ --recursive
AWS Cloud9にアクセス
ソースコードを編集
- wildryde-site/js/config.jsを開く
- cognitoテーブルのuserPoolIdに先ほどメモしたユーザープールIDを入力
- cognitoテーブルのuserPoolClientIdに先ほどメモしたユーザープールクライアントIDを入力
- cognitoテーブルのregionにリージョンを入力(東京リージョンで作業している場合はap-northeast-1)
window._config = {
cognito: {
userPoolId: '{ユーザープールID}', // e.g. us-east-2_uXboG5pAb
userPoolClientId: '{ユーザープールクライアントID}', // e.g. 25ddkmj4v6hfsfvruhpfi7n4hv
region: '{リージョン名}' // e.g. us-east-2
},
api: {
invokeUrl: '' // e.g. https://rc7nyt4tql.execute-api.us-west-2.amazonaws.com/prod',
}
};
変更を反映
変更したファイルを保存してCodeCommitのGitrリポジトリに反映します。
- Cloud9のターミナルで以下のコマンドを入力
$ git add .
$ git commit -m "new_config"
$ git push
動作確認
Webサイトにアクセスしてログイン機能が使えるか試してみましょう。
- AWS Consoleの検索欄に「amplify」と入力
- AWS Amplifyのロゴをクリック
- 前回作成したアプリを選択して左下のURLからWebサイトにアクセスします。
- WebサイトのメニューのGIDDY UP!をクリック
- Eメールアドレスとパスワードを入力
- 「Let’s RYDE」をクリック
- メールで認証コードが飛んでくるのでコピーする
- Eメールと認証コードを入力
- 「VERIFY」をクリック
サインイン画面が出てくるので登録したEメールとパスワードを入力してみましょう。サインインできたら成功です!
作成したユーザはCognitoの「ユーザープール」->「(ユーザープール名)」->「ユーザー」->「ユーザー名」で確認できます。またこの画面でユーザの削除などもできるようです。
まとめ
今回はAWS Cognitoを使ってWebサイトにログイン機能を実装しました。
次回( https://qiita.com/mkttks/items/c30e993adb520869dbb4 )はAWS Lambda と Amazon DynamoDB を使用してバックエンドの処理を実装していきます。