Amazon Simple Storage Service หรือที่รู้จักกันในชื่อ AWS S3 คือบริการจัดเก็บข้อมูลบนคลาวด์ ( Cloud Storage ) จาก Amazon Web Services ที่ได้รับความนิยมสูงสุดในโลก ด้วยความสามารถในการจัดเก็บข้อมูลได้แทบไม่จำกัด มีความทนทาน ( Durability ) สูงถึง 99.999999999% และพร้อมใช้งาน ( Availability ) ตลอด 24 ชั่วโมง
AWS S3 คืออะไร ?
AWS S3 เป็นบริการจัดเก็บ Object Storage บนคลาวด์ ซึ่งแตกต่างจากระบบไฟล์แบบดั้งเดิม โดย S3 จะจัดเก็บข้อมูลในรูปแบบ “Object” ซึ่งประกอบไปด้วย
- Data — ข้อมูลจริงที่ต้องการจัดเก็บ เช่น รูปภาพ วิดีโอ ไฟล์ PDF
- Metadata — ข้อมูลอธิบาย Object นั้น เช่น ขนาดไฟล์ วันที่สร้าง ประเภทไฟล์
- Unique Key — ชื่อหรือ Path ที่ใช้ระบุ Object ภายใน Bucket
แนวคิดหลักของ S3
- Bucket คือ “ภาชนะ” หรือ Container ที่ใช้จัดเก็บข้อมูลทั้งหมดของคุณ แต่ละ Bucket มีชื่อที่ไม่ซ้ำกันทั่วโลก ( Globally Unique ) และผูกกับ Region ใด Region หนึ่ง
ตัวอย่างชื่อ Bucket: my-company-backup-2024 - Object คือข้อมูลที่เก็บอยู่ใน Bucket มีขนาดได้ตั้งแต่ 0 bytes จนถึง 5 TB ต่อ Object หนึ่งชิ้น
- Key คือชื่อไฟล์หรือ Path ที่ใช้อ้างอิง Object ภายใน Bucket เช่น
s3://my-bucket/images/profile/user123.jpg
Storage Class ของ S3
AWS S3 มี Storage Class หลายประเภท เพื่อให้คุณเลือกใช้ตามความต้องการและควบคุมต้นทุน
| Storage Class | เหมาะสำหรับ | ความพร้อมใช้งาน | ต้นทุน |
|---|---|---|---|
| 3 Standard | ข้อมูลที่เข้าถึงบ่อย | 99.99% | สูง |
| S3 Intelligent-Tiering | ข้อมูลที่ไม่แน่ใจ Pattern การใช้งาน | 99.9% | ปานกลาง |
| S3 Standard-IA | ข้อมูลที่เข้าถึงไม่บ่อย | 99.9% | ต่ำกว่า Standard |
| S3 One Zone-IA | ข้อมูล Non-critical ที่เข้าถึงไม่บ่อย | 99.5% | ต่ำ |
| S3 Glacier | เก็บ Archive ระยะยาว | – | ต่ำมาก |
| S3 Glacier Deep Archive | เก็บ Archive ระยะยาวสุด | – | ต่ำที่สุด |
คุณสมบัติเด่นของ AWS S3
✅ Versioning
เปิดใช้งาน Versioning เพื่อเก็บประวัติการเปลี่ยนแปลงของไฟล์ทุกเวอร์ชัน ช่วยป้องกันการลบหรือแก้ไขไฟล์โดยไม่ตั้งใจ
✅ Lifecycle Policy
กำหนดนโยบายอัตโนมัติให้ย้ายข้อมูลระหว่าง Storage Class หรือลบข้อมูลเก่าตามช่วงเวลาที่กำหนด
✅ Server-Side Encryption ( SSE )
เข้ารหัสข้อมูลอัตโนมัติเมื่อจัดเก็บลง S3 รองรับ 3 ประเภท
- SSE-S3 — AWS จัดการ Key ให้ทั้งหมด
- SSE-KMS — ใช้ AWS Key Management Service
- SSE-C — คุณนำ Key มาเองจากภายนอก
✅ Access Control
ควบคุมการเข้าถึงข้อมูลผ่าน:
- Bucket Policy — กำหนด Permission ระดับ Bucket
- IAM Policy — กำหนดสิทธิ์ผ่าน AWS IAM
- ACL (Access Control List) — ควบคุมระดับ Object
✅ Static Website Hosting
ใช้ S3 เป็น Web Server สำหรับโฮสต์เว็บไซต์แบบ Static HTML / CSS / JS ได้โดยตรง
✅ S3 Transfer Acceleration
เร่งความเร็วการอัปโหลดไฟล์ขนาดใหญ่จากทั่วโลกผ่านโครงข่าย CloudFront Edge Locations
การใช้งาน S3 ด้วย AWS CLI
ติดตั้ง AWS CLI และกำหนดค่า Credentials แล้วเริ่มใช้งานได้ทันที
# สร้าง Bucket ใหม่
aws s3 mb s3://my-new-bucket --region ap-southeast-1
# อัปโหลดไฟล์
aws s3 cp myfile.txt s3://my-new-bucket/
# ดูรายการไฟล์ใน Bucket
aws s3 ls s3://my-new-bucket/
# ดาวน์โหลดไฟล์
aws s3 cp s3://my-new-bucket/myfile.txt ./downloaded-file.txt
# ลบไฟล์
aws s3 rm s3://my-new-bucket/myfile.txt
# ซิงค์โฟลเดอร์ทั้งหมด
aws s3 sync ./local-folder s3://my-new-bucket/remote-folder/
การใช้งาน S3 ด้วย Python ( Boto3 )
import boto3
# สร้าง S3 Client
s3 = boto3.client('s3', region_name='ap-southeast-1')
# สร้าง Bucket
s3.create_bucket(
Bucket='my-new-bucket',
CreateBucketConfiguration={'LocationConstraint': 'ap-southeast-1'}
)
# อัปโหลดไฟล์
s3.upload_file('local-file.txt', 'my-new-bucket', 'remote-file.txt')
# ดาวน์โหลดไฟล์
s3.download_file('my-new-bucket', 'remote-file.txt', 'downloaded.txt')
# ลิสต์ไฟล์ใน Bucket
response = s3.list_objects_v2(Bucket='my-new-bucket')
for obj in response.get('Contents', []):
print(obj['Key'], obj['Size'])
# สร้าง Presigned URL (ลิงก์ชั่วคราวสำหรับแชร์ไฟล์)
url = s3.generate_presigned_url(
'get_object',
Params={'Bucket': 'my-new-bucket', 'Key': 'remote-file.txt'},
ExpiresIn=3600 # หมดอายุใน 1 ชั่วโมง
)
print(url)
Use Cases ยอดนิยม
- Backup & Disaster Recovery — สำรองข้อมูลสำคัญจากระบบ On-Premise หรือ Database
- Static Website Hosting — โฮสต์เว็บไซต์ Static หรือ Single Page Application ( SPA )
- Data Lake — เก็บข้อมูลดิบจำนวนมหาศาลสำหรับวิเคราะห์ด้วย AWS Athena หรือ EMR
- Media Storage — จัดเก็บรูปภาพ วิดีโอ ไฟล์เสียงสำหรับแอปพลิเคชัน
- Log Archiving — เก็บ Log ไฟล์จาก Application หรือ Infrastructure
- Software Distribution — แจกจ่าย Software Package หรือ Artifact
- Machine Learning — เก็บ Dataset และ Model สำหรับ ML Pipeline
ราคาค่าบริการ ( Region: Asia Pacific – Singapore )
AWS S3 คิดค่าบริการตามการใช้งานจริง ไม่มีค่าขั้นต่ำ
- จัดเก็บข้อมูล ( S3 Standard ): ~$0.023 / GB / เดือน
- GET Request: ~$0.0004 / 1,000 requests
- PUT/POST Request: ~$0.005 / 1,000 requests
- Data Transfer ออก: Free สำหรับ 100 GB แรก / เดือน
Free Tier: AWS มีให้ใช้ฟรี 5 GB สำหรับผู้ใช้ใหม่ในช่วง 12 เดือนแรก
Best Practices สำหรับการใช้งาน S3
- เปิดใช้ Versioning เสมอสำหรับข้อมูลสำคัญ
- ปิด Public Access ใน Bucket ที่ไม่จำเป็นต้องเปิดสาธารณะ
- เปิด Encryption ทั้ง At-Rest และ In-Transit ( HTTPS )
- ตั้ง Lifecycle Policy เพื่อย้ายข้อมูลเก่าไปยัง Glacier โดยอัตโนมัติ
- ใช้ Presigned URL แทนการเปิด Public Access เมื่อต้องการแชร์ไฟล์
- เปิด MFA Delete สำหรับ Bucket ที่มีข้อมูลสำคัญมาก
- Monitor ด้วย CloudWatch และ S3 Access Logs เพื่อตรวจสอบความผิดปกติ
- เลือก Storage Class ให้เหมาะสม เพื่อประหยัดค่าใช้จ่าย
สรุป
AWS S3 เป็นหนึ่งในบริการที่ขาดไม่ได้บน AWS ด้วยความยืดหยุ่น ราคาที่คุ้มค่า และความน่าเชื่อถือระดับ Enterprise ไม่ว่าจะเป็นสตาร์ทอัพขนาดเล็กหรือองค์กรขนาดใหญ่ ต่างก็พึ่งพา S3 เป็น Backbone ของระบบจัดเก็บข้อมูล การทำความเข้าใจ S3 อย่างถ่องแท้จึงเป็นทักษะสำคัญสำหรับทุกคนที่ทำงานบน Cloud
อ่านเพิ่มเติม