テック技報最新号へ →
インフラ

Cognito のプールは 2 種類: ユーザープール(認証とトークン)と ID プール(AWS の一時認証情報)

@dkfj · 2026-11-02
#infra#aws#cognito#iam#sts#s3#認証

Cognito で迷いやすいのは、名前の似た 2 つのプールが別の仕事をしていること。ユーザープールは「この人は誰か」を確かめてトークンを出す。ID プール(Identity Pool、旧 Federated Identities)は、そのトークンと引き換えに STS の一時認証情報(アクセスキー・シークレット・セッショントークン)を払い出し、ブラウザやアプリから AWS API を直接呼べるようにする。

どちらが要るか

やりたいことユーザープールID プール
サインイン・サインアップ、自前 API の認可(JWT を API Gateway / 自前サーバーで検証)要る不要
ブラウザやスマホから S3 に直接アップロード、DynamoDB を直接読むなど、AWS API を直接呼ぶ要る(またはソーシャルログイン等)要る
未ログインのゲストにも限定した AWS 権限を渡す不要要る(未認証ロール)

サインインだけならユーザープールで足りる。「クライアントから AWS に直接触る」ときに初めて ID プールが必要になる。

流れ(ブラウザから S3 へ直接アップロードする場合)

  1. ユーザープールでサインインし、ID トークンを受け取る
  2. ID プールに ID トークンを渡す(GetId → GetCredentialsForIdentity)
  3. ID プールが、紐付けた IAM ロール(認証済みロール)を引き受けた一時認証情報を返す
  4. その認証情報で S3 の PutObject を呼ぶ

注意点

出典

X の元の投稿を開く