S3 Fundamentals
Amazon S3 เป็น object storage service สำหรับเก็บข้อมูลแทบทุกขนาด ใช้ได้ตั้งแต่ static asset, backup, log archive, data lake ไปจนถึง event-driven workflows
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-Tiering | access 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 classes | archive และ long-term retention | retrieval ใช้เวลา/มีค่าใช้จ่ายตาม 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
- แยก Bucket, Object, Key และ prefix ได้
- เลือก storage class เบื้องต้นตาม access pattern และ retention ได้
- เข้าใจว่า Versioning เพิ่ม recovery แต่ต้องจัดการ cost ด้วย Lifecycle
Review questions
- Bucket, Object และ Key ต่างกันอย่างไร?
- Versioning ช่วยป้องกันความผิดพลาดแบบใด?
- ควรเลือก S3 Intelligent-Tiering เมื่อไร?