はじめに
AWS Cognitoは、AWSが提供する認証・認可サービスで、ユーザー認証やセッション管理を簡単に行えます。
以下のような方におすすめの内容です。
- サーバーレスに興味がある
- ユーザー認証や認可を手軽に実現したい
- AWS認定の勉強をしている
この記事を読むことで、Cognitoの基本的な機能と、どのように利用できるかを学ぶことができます。
Cognitoとは

Amazon Cognitoは、アプリケーションにユーザー認証・認可機能を追加するためのAWSサービスです。ユーザー登録、ログイン、トークン発行といった処理をシンプルに実装できます。
主な特徴
- ユーザー管理: ユーザー登録やログイン機能を簡単に実装。ユーザープールで安全に管理。
- 認証トークンの発行: JWTトークン(IDトークン、アクセストークン、リフレッシュトークン)を利用可能。
- 他サービスとの連携: API GatewayやLambdaなどAWSサービスとの統合がスムーズ。
- IDプロバイダー対応: FacebookやGoogleなどのSNSログインに対応。
- カスタマイズ性: メールやSMSを用いた認証コード送信や、パスワードポリシーの設定が可能。
Cognitoの主な機能

ユーザープール
ユーザーの登録・ログインを管理するための機能です。
特徴として以下が挙げられます。
ユーザーの情報をAWS内で安全に保存
認証トークン(JWT)を発行
MFA(二要素認証)対応
使用例として、Webアプリのログイン機能やスマホアプリのユーザー登録に使用されます。
IDプール(フェデレーション)
ユーザーがサインイン後、AWSリソースへのアクセス権を付与するための仕組みです。
特徴として以下が挙げられます。
Cognitoで認証した後にIAMロールを割り当て
外部IDプロバイダー(Google、Apple)と連携可能
使用例として、認証後にS3へのファイルアップロードを許可やDynamoDBへのデータアクセス制御に使用されます。
Cognitoのコスト

Cognitoの料金は以下の要素で構成されます。
ユーザープール
無料枠: 月間5万件のアクティブユーザー(MAU)まで無料。
有料: 5万件を超えると、追加のMAUごとに課金。
IDプール
無料枠: 月間5万件のリクエストまで無料。
有料: 追加のリクエストごとに課金。
Cognitoと組み合わせるサービス

API Gateway
認証トークンを利用して、安全なAPIを構築することができます。
Lambda
ユーザーが入力したデータを処理したり、動的な認可を実現します。
S3
ユーザー認証後にファイルアップロードを制御する。
DynamoDB
認証済みユーザーごとにデータベースの読み書きを制限する。
まとめ
Amazon Cognitoを利用することで、サーバレスでスケーラブルな認証・認可機能を手軽に構築できます。
ユーザー管理やトークン発行、外部IDプロバイダーとの連携が簡単に行えます。これにより、アプリケーション開発の効率が良くなります。
他のAWSサービスと組み合わせることで、より強力なアーキテクチャを構築できますので、ぜひ一度試してみてください!