全く無知なので、ちょっと調べてみました。
何ができる?
ユーザープール機能
ログインを提供する機能です。
- AWS内にユーザディレクトリ(ユーザープール)を作成できる機能のこと
- ユーザパスワード、メールアドレス、電話番号、カスタム属性などを格納可能 ユーザにまつわるデータベースの構築ですね
- LDAPみたいなものだと思ってます
- 上記ユーザプールを利用して認証・および認証済みをあらわすトークン(ユーザープールトークン)を取得できる
- ユーザーはグループにまとめることも可能
-
ソーシャルサインインを用いて、Googleなど他プロバイダからもログイン可能 (Identity Provider機能)
- この場合でも、ユーザープールにユーザのエントリは残る
- ログインページをAWS上で作成することが可能
- JWT発行まわりだけを丸投げすることも可能
- リフレッシュトークンとアクセストークンを発行してくれます
- APIサーバはアクセストークンを検証して、問題なければユーザログイン済みとして扱えばOK
- AWSが発行するアクセストークンは公開鍵暗号形式(RS256)
- APIサーバがログイン機能を持つ必要はありません。
アイデンティティプール機能
ログイン後のAWSサービスへのアクセスを提供する機能です。
- ユーザープールからユーザ認証成功時に発行されるトークンを使って、AWSのサービスに対するアクセス権を得ることができる機能のこと
- e.g. S3, AppSync, DynamoDB, Lambda
- 別にユーザープールからのトークンだけはなく、他のOAuthプロバイダからのログインも使える。 (Federated Identity)
何に使える?
- ログイン
- 要するにユーザ認証プロバイダ
- 作成したサービスのログインまわりをAmazon Cognitoに投げられる
- サーバレスアプリ
- SPA + AWSのマネージドサービスで構成する
- ログインは他のOAuthプロバイダ、あるいはAWS上のユーザープールを用いる
- ログイン済みユーザには、アイデンティティプールを使って、AWS上に用意したLambdaや、マネージドサービスに直接アクセスしてもらう
- ここらへんのクラウドスタックをすぐに構築できるようになっているAWS AmplifyはCognitoを中心にしたスタックを見据えていると思います
料金
ユーザープールについて、月ごとのアクティブユーザ(サインインなどが生じたユーザ)の数で、今(2019/11/11)のところ、 50,000ユーザまで無料、そこから 0.00550 USD / ユーザ、もっといくとスケールメリットで安くなる、となっています。
月間ユーザ(MAU) | 料金(USD) | 料金(JPY 110円換算) | MAUあたりの料金増分 |
---|---|---|---|
50,000 | 0 | 0 | ここから先は 0.00550USD |
60,000 | 55 | 6,050 | |
70,000 | 110 | 12,100 | |
80,000 | 165 | 18,150 | |
90,000 | 220 | 24,200 | |
100,000 | 275 | 30,250 | ここから先は 0.00460USD |
110,000 | 321 | 35,310 | |
200,000 | 735 | 80,850 | |
400,000 | 1,655 | 182,050 | |
800,000 | 3,495 | 384,450 | |
1,000,000 | 4,415 | 485,650 | ここから先は 0.00325USD |
2,000,000 | 7,665 | 843,150 | |
4,000,000 | 14,165 | 1,558,150 | |
8,000,000 | 27,165 | 2,988,150 | |
10,00,0000 | 33,665 | 3,703,150 | ここから先は 0.00250USD |
20,000,000 | 58,665 | 6,453,150 | |
40,000,000 | 108,665 | 11,953,150 | |
120,000,000 | 308,665 | 33,953,150 |
(※実際にサービス利用する際は自分で計算してください)
小規模サービスだと無料、全国民が使うサービスを作ると3千万円ぐらいかかるそうです。(ただし、その前にアカウントごとのリミットあり)
また、上記はプレーンなユーザープールの使い方に対して課金されており、TOTPやSAMLなど使うともっと高いレートがMAUごとに適用されます。
次回
実際になにか構築してみたい