首頁

AWS SAA-C03 口袋筆記 - Cognito & Amplify

Amazon Cognito 用於協助外部使用者(mobile/web app)取得AWS resource臨時用的credential。

現實生活中,拜訪客戶公司時,警衛可能透過打電話或從名片中先確認身份,確認無誤後再給予訪客證或門禁卡,訪客才得以進入大樓。

Amazon Cognito做類似的事情。外部app透過Cognito,先從Cognito User Pools (CUP)裡確認身份無誤後,再從Cognito Identity Pools (CIP)去取得AWS credentials。

Cognito User Pools: 主要作為 serverless 的 user database。提供以下功能特性:

  • 簡易帳密登入 & 密碼重設
  • Email & 電話認證
  • 可啟用MFA認證
  • 社群登入 (FB, Google, SAML...)
  • 可與API Gateway整合。 app -(authenticate)-> Cognito User Pools -(return token)-> app -(rest api with token)-> API Gateway -(evaluate token)-> Cognito User Pools -(authenticated)-> API Gateway -(access with identity)-> backend 
  • 可與Application Load Balance整合。 app -> ALB -(authenticate)-> Cognito User Pools -(authenticated)-> ALB -> backend
Cognito Identity Pools (Federated Identities): 提供用戶暫時的AWS credentials。 
  • 用戶來源於Cognito User Pools, 社群登入, SAML provider, OpenID connect provider...等。
  • 用戶於來源驗證後,再與Cognito Identity Pools換取暫時的credentials
  • 這些credentials裡有我們在Cognito裡設定的IAM policies
    • 也可以透過user_id去做細部的權限控管
  • 提供guess機制。使用Default IAM roles。

-- 分隔線 --

AWS Amplify (BaaS) 提供完整的解決方方案,讓前端開發者能更快速的開發、建置跟發佈前端(web/mobile)應用程式。可想做它像是Elastic Beanstalk (PaaS) for mobile/web application。
透過 Amplify CLI 可以快速建立一個 Amplify backend,裡面包含許多AWS serverless的服務,像S3、Cognito、Lambda、DynamoDB等。






Reference
  • https://godleon.github.io/blog/AWS/AWS-SOA-VPC/
  • https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c03
  • https://www.tenlong.com.tw/products/9786263333123?list_name=lv