AWS DVA-C02
Esc
↑↓เลื่อน↵เปิดescปิด28 ผลลัพธ์
08

Amazon S3

Object Storage หลักของ AWS: Buckets, Security, Versioning, Replication และ Storage Classes สำหรับสอบ DVA-C02

Storage 22 นาที 20 คำถาม

01S3 Overview: Buckets และ Objects

Amazon S3 (Simple Storage Service) เป็นบริการ object storage ที่ออกแบบให้เก็บข้อมูลได้แบบไม่จำกัด (infinitely scaling) เป็นหนึ่งใน building block หลักของ AWS ใช้ทำ backup, disaster recovery, data lake, static website, media hosting และอื่นๆ

Buckets

  • ข้อมูลถูกเก็บใน buckets (เปรียบเสมือน top-level directory)
  • ชื่อ bucket ต้อง globally unique (ไม่ซ้ำกับใครในทุก account ทุก region ทั่วโลก)
  • Bucket ถูกสร้างที่ระดับ region (region-level) แม้ชื่อจะ global
  • กฎการตั้งชื่อ: ไม่มีตัวพิมพ์ใหญ่, ไม่มี underscore, ยาว 3-63 ตัวอักษร, ไม่ใช่ IP, ขึ้นต้นด้วยตัวอักษรพิมพ์เล็กหรือตัวเลข

Objects และ Keys

  • Objects (ไฟล์) มี key ซึ่งก็คือ FULL path เช่น s3://my-bucket/folder1/file.txt โดย key = folder1/file.txt
  • key ประกอบด้วย prefix (folder1/) + object name (file.txt)
  • S3 ไม่มี directory จริง เป็น flat structure เพียงแต่ UI ทำให้ดูเหมือนมี folder
  • object value คือ content ของไฟล์ ขนาดสูงสุด 5TB (5,000GB)
  • ถ้าไฟล์ > 5GB ต้องใช้ multipart upload (single PUT รองรับได้สูงสุด 5GB)
  • มี metadata, tags และ version id (ถ้าเปิด versioning)
กับดักข้อสอบ: 5GB vs 5TB
ขนาด object สูงสุดคือ 5TB แต่การ upload ครั้งเดียว (single operation) ทำได้สูงสุด 5GB ดังนั้นไฟล์ที่ใหญ่กว่า 5GB ต้อง ใช้ multipart upload อย่าสับสนตัวเลขสองตัวนี้

02S3 Security: IAM, Bucket Policy และ Block Public Access

S3 ควบคุมการเข้าถึงได้หลายระดับ ทั้งระดับ user (IAM-based) และระดับ resource (resource-based) การเข้าใจความแตกต่างเป็นหัวใจของข้อสอบ DVA-C02

ประเภทของ Security

  • User-based (IAM Policies): กำหนดว่า IAM user/role ทำ API call อะไรได้บ้าง
  • Resource-based (Bucket Policy): กฎระดับ bucket เขียนเป็น JSON ใช้ทำ cross-account และ public access
  • Object ACL / Bucket ACL: การควบคุมระดับ object/bucket (ปัจจุบันมักปิดใช้งาน)

หลักการประเมินสิทธิ์: IAM principal เข้าถึง object ได้ ถ้า IAM policy อนุญาต หรือ resource policy อนุญาต และ ไม่มี explicit DENY

S3 Bucket Policy
เป็น resource-based JSON policy มีองค์ประกอบหลัก: Resource (bucket/object ที่ใช้กับ), Effect (Allow/Deny), Action (ชุด API เช่น s3:GetObject), Principal (account/user ที่ใช้กับ) ใช้สำหรับ: ให้ public access, บังคับ encryption ตอน upload, และให้สิทธิ์ cross-account
json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-bucket/*"
    }
  ]
}
กับดักข้อสอบ: Block Public Access
Block Public Access เป็นการตั้งค่าเพิ่ม (ระดับ account และ bucket) ที่ override ทุกนโยบาย ถูกเปิดเป็น default แม้ตั้ง Bucket Policy เป็น public แล้วแต่ถ้า Block Public Access ยังเปิดอยู่ จะเข้าถึงไม่ได้ ต้อง ปิด Block Public Access ก่อน ออกข้อสอบบ่อยมาก
ประเด็นIAM PolicyBucket Policy
ประเภทIdentity-basedResource-based
แนบกับuser / group / rolebucket
ระบุ Principalไม่ระบุ (เป็นของ identity นั้น)ต้องระบุ Principal
Cross-accountทำได้ยุ่งยากเหมาะที่สุด (ระบุ ARN account อื่น)
Public/anonymousทำไม่ได้ทำได้ (Principal: *)

03S3 Static Website Hosting

S3 สามารถ host static website (HTML/CSS/JS รูปภาพ) และเข้าถึงผ่าน HTTP ได้โดยตรง โดยไม่ต้องมี server

  • เปิด feature Static Website Hosting และระบุ index document (เช่น index.html) และ error document
  • Website endpoint จะอยู่ในรูปแบบ (ขึ้นกับ region) เช่น: bucket-name.s3-website-region.amazonaws.com หรือ bucket-name.s3-website.region.amazonaws.com
  • ต้องตั้งค่า bucket ให้ public read ผ่าน Bucket Policy (s3:GetObject) มิฉะนั้นจะได้ 403 Forbidden
  • ต้องปิด Block Public Access ด้วย
Tip สอบ: 403 Forbidden
ถ้าเปิด static website แล้วเจอ 403 Forbidden ให้ตรวจสอบว่าได้ตั้ง Bucket Policy เป็น public read และปิด Block Public Access แล้วหรือยัง นี่คือสาเหตุที่พบบ่อยที่สุดในข้อสอบ

04S3 Versioning

Versioning ช่วยเก็บหลายเวอร์ชันของ object เดียวกันใน bucket ป้องกันการลบโดยไม่ตั้งใจและการเขียนทับ (overwrite)

  • เปิดที่ระดับ bucket (bucket-level setting)
  • object เดียวกันที่อัปโหลดทับจะได้ version id ใหม่ ส่วนตัวเก่ายังอยู่
  • ป้องกัน accidental delete: การลบจะสร้าง delete marker ไม่ลบจริง สามารถกู้คืนได้
  • ไฟล์ที่มีอยู่ก่อนเปิด versioning จะมี version id เป็น null
  • สามารถ suspend versioning ได้ โดย version เดิมที่มีอยู่จะไม่ถูกลบ
หมายเหตุ: Delete Marker
การลบแบบไม่ระบุ version (DELETE object ปกติ) จะสร้าง delete marker ทำให้ object ดูเหมือนหายไป แต่ version เดิมยังอยู่ การลบ delete marker จะกู้ object กลับมา ส่วนการลบถาวรต้องระบุ version id ที่ต้องการลบเฉพาะเจาะจง
bash
# เปิด versioning
aws s3api put-bucket-versioning \
  --bucket my-bucket \
  --versioning-configuration Status=Enabled

# แสดงทุก version ของ object
aws s3api list-object-versions --bucket my-bucket

# ลบถาวรเฉพาะ version (permanent delete)
aws s3api delete-object \
  --bucket my-bucket --key file.txt \
  --version-id <VERSION_ID>

05S3 Replication: CRR และ SRR

S3 Replication คัดลอก object ระหว่าง bucket โดยอัตโนมัติแบบ asynchronous มีสองแบบตาม region

CRR (Cross-Region Replication)
Replicate ข้าม region เหมาะกับ: ลด latency ให้ผู้ใช้ในภูมิภาคอื่น, compliance ข้อกำหนดต้องเก็บข้ามภูมิภาค, disaster recovery, และ replication ข้าม account
SRR (Same-Region Replication)
Replicate ภายใน region เดียวกัน เหมาะกับ: รวม log จากหลาย bucket (log aggregation), sync ระหว่าง production และ test account, และ live replication ระหว่าง account

ข้อกำหนดและพฤติกรรมสำคัญ

  • ต้องเปิด Versioning ทั้ง source และ destination bucket
  • ต้องให้สิทธิ์ IAM permissions แก่ S3 ในการ replicate (proper IAM role)
  • Replication เป็นแบบ asynchronous
  • หลังเปิด replication จะ replicate เฉพาะ object ใหม่ ที่เขียนเข้ามา (object เก่าต้องใช้ S3 Batch Replication เพื่อ replicate ย้อนหลัง)
  • ไม่มี chaining: ถ้า bucket1 -> bucket2 และ bucket2 -> bucket3 object จาก bucket1 จะ ไม่ถูก replicate ต่อ ไป bucket3
หมายเหตุ: Delete Markers
การ replicate delete marker เป็น optional (เปิด Delete marker replication เอง) ส่วนการลบแบบระบุ version id (permanent delete) จะ ไม่ถูก replicate เพื่อป้องกันการลบข้อมูลพร้อมกันทั้งสองฝั่ง
กับดักข้อสอบ: Versioning ทั้งสองฝั่ง
ข้อสอบชอบหลอกว่าเปิด versioning แค่ source ก็พอ — ผิด ต้องเปิด versioning ทั้ง source และ destination มิฉะนั้น replication ตั้งค่าไม่ได้

06S3 Storage Classes ทั้งหมด

S3 มี storage class หลายแบบเพื่อ balance ระหว่างราคาและการเข้าถึง ทุก class มี durability เท่ากันที่ 99.999999999% (11 nines) ต่างกันที่ availability, ราคา, minimum duration และ retrieval time

S3 Standard - General Purpose
Availability 99.99% เข้าถึงบ่อย latency ต่ำ throughput สูง ไม่มี retrieval fee เหมาะกับ big data analytics, mobile/gaming, content distribution
S3 Standard-IA (Infrequent Access)
Availability 99.9% เข้าถึงไม่บ่อยแต่ต้องเร็วเมื่อต้องการ ราคา storage ถูกกว่า Standard แต่มี retrieval fee, minimum 30 วัน เหมาะกับ disaster recovery, backups
S3 One Zone-IA
Availability 99.5% เก็บใน AZ เดียว ถ้า AZ พังข้อมูลหาย ราคาถูกกว่า Standard-IA, minimum 30 วัน เหมาะกับ secondary backup หรือข้อมูลที่ สร้างใหม่ได้ (re-creatable เช่น thumbnail)
S3 Glacier Instant Retrieval
Archive ราคาถูก แต่เข้าถึงแบบ millisecond ทันที เหมาะข้อมูลที่เข้าถึงราว ไตรมาสละครั้ง, minimum storage 90 วัน
S3 Glacier Flexible Retrieval
(เดิมชื่อ S3 Glacier) Archive ต้อง restore ก่อนใช้ มี 3 ระดับ: Expedited (1-5 นาที), Standard (3-5 ชม.), Bulk (5-12 ชม. ฟรี), minimum 90 วัน
S3 Glacier Deep Archive
ราคา ถูกที่สุด สำหรับ long-term archive, retrieval: Standard 12 ชม., Bulk 48 ชม., minimum storage 180 วัน เหมาะกับ compliance archive ที่แทบไม่เข้าถึง
S3 Intelligent-Tiering
ย้าย object ระหว่าง tier อัตโนมัติ ตาม usage pattern มีค่า monitoring fee เล็กน้อยต่อ object แต่ ไม่มี retrieval fee เหมาะเมื่อ access pattern ไม่แน่นอน ไม่ต้องบริหาร lifecycle เอง
Storage ClassAvailabilityMin DurationRetrieval
Standard99.99%-ทันที (ms)
Standard-IA99.9%30 วันทันที (ms)
One Zone-IA99.5%30 วันทันที (ms)
Glacier Instant Retrieval99.9%90 วันทันที (ms)
Glacier Flexible99.99%90 วัน1 นาที - 12 ชม.
Glacier Deep Archive99.99%180 วัน12 - 48 ชม.
Intelligent-Tiering99.9%-auto / ขึ้นกับ tier
Tip สอบ: เลือก Storage Class
ข้อสอบมักให้ scenario แล้วถามว่าควรใช้ class ไหน จับคีย์เวิร์ด: ถูกที่สุด + archive นานๆ = Deep Archive, archive แต่ต้องเร็ว = Glacier Instant Retrieval, access pattern ไม่แน่นอน = Intelligent-Tiering, re-creatable / ยอม AZ เดียว = One Zone-IA

คำถามทบทวน

ทดสอบความเข้าใจหัวข้อ Amazon S3

20 ข้อ · เลือกคำตอบเพื่อดูเฉลยและคำอธิบาย

ทำแล้ว 0/20คะแนน 0
  1. 1.ชื่อ bucket ใน S3 มีข้อจำกัดเรื่องความ unique ระดับใด?

  2. 2.object ใน S3 มีขนาดสูงสุดเท่าใด และเมื่อใดที่ต้องใช้ multipart upload?

  3. 3.ทีมต้องการให้ object ทั้งหมดใน bucket อ่านได้แบบ public สำหรับเว็บไซต์ วิธีที่เหมาะสมที่สุดคืออะไร?

  4. 4.แม้ตั้ง Bucket Policy เป็น public แล้ว แต่ object ยังเข้าไม่ได้ สาเหตุที่เป็นไปได้มากที่สุดคือ?

  5. 5.เมื่อเปิด Versioning บน bucket แล้วทำการลบ object ด้วยคำสั่ง delete ปกติ จะเกิดอะไรขึ้น?

  6. 6.ข้อใดถูกต้องเกี่ยวกับการ suspend versioning?

  7. 7.ข้อกำหนดสำคัญสำหรับการตั้งค่า S3 Replication (CRR/SRR) คืออะไร?

  8. 8.S3 Replication ทำงานแบบ chain ได้หรือไม่ (bucket1 -> bucket2 -> bucket3)?

  9. 9.Storage class ใดมี availability ต่ำที่สุดและเหมาะกับข้อมูลที่สร้างใหม่ได้ (re-creatable)?

  10. 10.object durability ของ S3 ทุก storage class คือเท่าใด?

  11. 11.ลูกค้าต้องการเก็บ archive ที่เข้าถึงน้อยมากและต้องการต้นทุนต่ำที่สุด ยอมรับเวลา retrieval หลายชั่วโมงได้ ควรใช้ storage class ใด?

  12. 12.Glacier class ใดให้ retrieval แบบ millisecond ทันที เหมาะกับข้อมูล archive ที่ต้องเข้าถึงเป็นบางครั้งแบบเร็ว?

  13. 13.S3 Intelligent-Tiering เหมาะกับสถานการณ์ใดมากที่สุด?

  14. 14.การให้สิทธิ์ข้าม account (cross-account access) ให้ account อื่นอ่าน object ใน bucket ทำได้โดยวิธีใด?

  15. 15.สำหรับ S3 Static Website Hosting URL ของเว็บไซต์จะอยู่ในรูปแบบใดและต้องการอะไร?

  16. 16.การ replicate delete marker ใน S3 Replication มีลักษณะอย่างไร?

  17. 17.object ที่เก็บใน Standard-IA และ One Zone-IA มีข้อกำหนดเรื่องระยะเวลาเก็บขั้นต่ำ (minimum storage duration) อย่างไร?

  18. 18.object key ใน S3 หมายถึงอะไร?

  19. 19.กรณีใช้ทั้ง IAM policy และ Bucket Policy การประเมินสิทธิ์เป็นอย่างไร (ภายใน account เดียว)?

  20. 20.ต้องการ replicate ข้อมูลไปยัง bucket ในภูมิภาคอื่นเพื่อลด latency ให้ผู้ใช้ปลายทางและ compliance ควรใช้ feature ใด?