Lesson 1S3

S3 Fundamentals

Amazon S3 เป็น object storage service สำหรับเก็บข้อมูลแทบทุกขนาด ใช้ได้ตั้งแต่ static asset, backup, log archive, data lake ไปจนถึง event-driven workflows

Data model Bucket + Key ระบุ object S3 ไม่ใช่ filesystem จริง prefix เป็น namespace ใน key ไม่ใช่ folder แบบ block/file storage
Access pattern Storage class ต้องตรงกับ retrieval pattern IA/Glacier ลด storage cost แต่มี retrieval cost, duration และ latency tradeoff
Versioning กู้คืนได้ แต่ version เก่ายังคิดเงิน เปิด versioning ต้องมี lifecycle สำหรับ noncurrent versions เสมอ

Bucket, Object และ Key

S3 เก็บข้อมูลเป็น Object ภายใน Bucket แต่ละ object มี data, metadata และ Key ซึ่งเป็นชื่อเฉพาะภายใน bucket เช่น logs/2026/06/app.log Bucket อยู่ใน Region ที่เลือกตอนสร้างและชื่อ bucket ต้อง unique ตาม namespace ที่เกี่ยวข้อง

s3://example-learning-bucket/
  raw/upload.csv
  backups/db/2026-06-16.sql.gz
  static/index.html

Storage Classes

Storage Classเหมาะกับข้อควรระวัง
S3 Standardข้อมูลเข้าถึงบ่อยราคาสูงกว่า archival class
S3 Intelligent-Tieringaccess pattern เปลี่ยนหรือไม่แน่นอนมี monitoring/automation charge
S3 Standard-IAข้อมูลเข้าถึงไม่บ่อยแต่ต้องการเร็วมี retrieval cost และ minimum storage duration
S3 One Zone-IAข้อมูล reconstruct ได้และยอมรับ single AZ ได้ไม่เหมาะกับ critical data ที่ต้อง multi-AZ durability
S3 Glacier classesarchive และ long-term retentionretrieval ใช้เวลา/มีค่าใช้จ่ายตาม class

Versioning

S3 Versioning เก็บหลาย version ของ object ใน bucket เดียว ช่วยกู้คืนเมื่อเผลอลบหรือ overwrite object แต่ version เก่ายังคิดค่า storage จึงควรใช้คู่กับ Lifecycle Policy

Static Website Hosting และ Event Notification

S3 สามารถ host static website ได้ แต่ต้องระวัง public access, HTTPS และ custom domain บ่อยครั้ง production static site จะใช้ CloudFront ด้านหน้า S3 Event Notification ใช้ trigger SNS, SQS หรือ Lambda เมื่อ object ถูกสร้าง/ลบ เพื่อทำ workflow เช่น image processing หรือ data pipeline

Common mistakes

  • คิดว่า prefix คือ folder จริง ทั้งที่ S3 เป็น object storage ที่ใช้ key namespace
  • เปิด Versioning แล้วไม่ตั้ง Lifecycle จน version เก่าสะสมค่า storage
  • ใช้ S3 เป็น filesystem สำหรับ workload ที่ต้อง random write หรือ file locking
  • เปิด public website โดยไม่เข้าใจ Block Public Access และ bucket policy
Before next lesson
  1. แยก Bucket, Object, Key และ prefix ได้
  2. เลือก storage class เบื้องต้นตาม access pattern และ retention ได้
  3. เข้าใจว่า Versioning เพิ่ม recovery แต่ต้องจัดการ cost ด้วย Lifecycle

Review questions

  1. Bucket, Object และ Key ต่างกันอย่างไร?
  2. Versioning ช่วยป้องกันความผิดพลาดแบบใด?
  3. ควรเลือก S3 Intelligent-Tiering เมื่อไร?