Cognito
ระบบ login/สมัครสมาชิกสำหรับผู้ใช้แอปของเรา
IAM ดูแล "พนักงานหลังบ้านของเรา (พนักงานบริษัท)", ส่วน Cognito ดูแล "ลูกค้าที่มาใช้แอปหรือเว็บหน้าร้านของเรา" — มันคือระบบสำหรับจัดการการสมัครสมาชิก (Sign-up) และเข้าสู่ระบบ (Sign-in) ของผู้ใช้ปลายทาง
Amazon Cognito (ระบบล็อกอินสำหรับผู้ใช้แอป) ช่วยให้เราเพิ่มระบบล็อกอินเข้าแอปได้ง่ายๆ โดยแบ่งเป็น 2 ส่วนหลักๆ คือ:
- User Pool — เหมือนสมุดรายชื่อ (Directory) ผู้ใช้: ทำหน้าที่จัดการการสมัคร, ล็อกอิน, MFA, ลืมรหัสผ่าน รวมถึงรองรับการล็อกอินผ่านผู้ให้บริการอื่น (Google/Facebook/Apple/SAML)
- Identity Pool — เมื่อล็อกอินผ่าน User Pool สำเร็จแล้ว Identity Pool จะเสกโทเคนไปแลกสิทธิ์ชั่วคราว (ผ่าน IAM role) เพื่อให้ผู้ใช้คนนั้นสามารถดึงข้อมูลจากบริการ AWS โดยตรง (เช่น โหลดไฟล์จาก S3 ส่วนตัว) อย่างปลอดภัย
สรุป Key Takeaways
- Cognito = ระบบ identity สำหรับผู้ใช้ปลายทางของแอป (ไม่ใช่ทีมแอดมิน)
- User Pool = สมัคร/ล็อกอิน + social login, Identity Pool = ให้สิทธิ์เข้าถึง AWS
- งานล็อกอินผู้ใช้แอป → Cognito, งานสิทธิ์ผู้ดูแล AWS → IAM
คำถามที่พบบ่อย
User Pool กับ Identity Pool ต่างกันยังไง
User Pool = ระบบสมาชิก (สมัคร/ล็อกอิน/MFA ให้แอปเรา ได้ JWT token) ส่วน Identity Pool = แลก token เป็น "credential AWS ชั่วคราว" เพื่อให้ผู้ใช้เข้าถึงบริการ AWS ตรงๆ (เช่น อัปโหลดขึ้น S3) — โจทย์ "ให้ผู้ใช้แอป mobile อัปโหลดไฟล์เข้า S3" = ใช้คู่กัน โดย Identity Pool เป็นตัวออกสิทธิ์
อยากให้ล็อกอินด้วย Google/Facebook ทำยังไง
User Pool รองรับ federation กับ social provider และ SAML/OIDC ขององค์กร — ผู้ใช้ล็อกอินผ่าน provider ที่เลือก แต่แอปเราคุยกับ Cognito ที่เดียวรูปแบบ token เดียว ไม่ต้องเขียนรองรับทีละเจ้า
ลองทำ Quiz ท้ายบท
คำถามแนวข้อสอบของโมดูลนี้ 5 ข้อ · เฉลยทันที

