AWS関連の記事8月5日、8月12日、8月18日の続きで今回検討しているバックエンドでAmazon Cognitoが使えるか試してみました。
Amazon Cognito(AWS Cognito)は、ユーザー管理や認証(ログイン)を簡単に作れるAWSのサービスです。
Photo © Stephen Craven (cc-by-sa/2.0)
AWS Cognitoを使ってみる
やはり、実際に使ってみないとドキュメントからは判らないことがあります。 そこで評価用のReactアプリを作ることにしました、以前Docker時代のAWSの学び方に書いたようにネット上の情報やAWS公式ドキュメントをもとに作ってみたのですがAWSの環境セットアップが上手くできません、判っている人には些細な問題かもしれませんが🥺
しかし、GitHubのaws-cognito-react - v2に出会えました! AWSの環境セットアップはAWS Cloud Development Kitで書かれていて、実行するとAWS Cognitoの環境が無事にできました。そして簡単な設定でReactからユーザー登録、ログイン等が試せるようになりました。
aws-cognito-react - v2を作ってくれたDavid Broadhurstさんありがとうございます !!
AWS Cognitoのメリット・デメリット
AWS Cognitoのセットアップができたので、自前でReactアプリを作り試してみて判ったことをまとめると。
メリット
メリットは、ユーザー認証一式をサポートしているサービスだということです
- ユーザー管理用データーベース
- email/password以外のデータも持てる
- AWS Consoleでユーザー情報を表示・変更できる
- APIで参照・変更できる
- ログイン・登録画面のReactのひな形が準備されている
- ユーザー数が増えてもスーケールする(らしい)
- Google、Facebook、Amazonなどを使った認証もサポート
デメリット
- いつものAWSサービス設定が難しい問題 😸
- 当然、ローカルのRDBとは結合(JOIN)できない
- 本番で使うにはログイン・登録画面は基本的には作る必要がある(ひな形は使えない)
まとめ
Cognitoはスマフォアプリ、Webフロントエンドのみに注力したい開発者にはありがたいサービスです。ユーザー認証・管理の一式が提供されています、AWS Console(Web)からユーザー情報を表示・変更ができるのでサービス立ち上げ時に管理画面等を作る必要はありません。
しかし、今回のバックエンドのようにRDBを持ち、課金サービスやグループ管理など必要なケースではAPI経由でしかアクセスできずバックエンドのRDBと結合(JOIN)できないのは大きなデメリットで、今回のバックエンドはCognitoの採用は見送りました。