# การใช้ Cloud Storage Bucket เป็น Origin
Web CDN สามารถดึงข้อมูลจาก cloud storage bucket โดยตรง (เช่น Amazon S3, Google Cloud Storage และผู้ให้บริการอื่นๆ) แทนการดึงจากเว็บเซิร์ฟเวอร์ปกติ นิยมใช้สำหรับให้บริการไฟล์ static หรือไฟล์ สำหรับดาวน์โหลดโดยตรงจาก storage เพื่อช่วยลดค่าใช้จ่ายด้าน egress และเพิ่มความเร็วในการส่งข้อมูล ผ่านเครือข่าย edge ของ CDN
การใช้ bucket เป็น origin มี 2 รูปแบบ ขึ้นอยู่กับว่า bucket นั้นเปิดให้เข้าถึงแบบสาธารณะหรือไม่
- Public bucket — ไฟล์ใน bucket สามารถเข้าถึงได้โดยไม่ต้องยืนยันตัวตน ไม่ต้องตั้งค่าเพิ่มเติม นอกจากการชี้ Web CDN ไปยัง hostname ของ bucket
- Private bucket — การเข้าถึงไฟล์ต้องมีการยืนยันตัวตน (authenticated request) ซึ่ง Web CDN สามารถเซ็นชื่อ (sign) คำขอไปยัง origin แทนคุณได้ผ่านฟีเจอร์ Request Signing
TIP
เอกสารหน้านี้ครอบคลุมเฉพาะ Web CDN สำหรับ Live Streaming CDN (HLS) การตั้งค่า credentials ของ private bucket จะแตกต่างออกไป คือฝังไว้ใน origin stream URL โดยตรง ดูรายละเอียดที่ การใช้ Cloud Storage Bucket เป็นต้นทางของสตรีม
# ตั้งค่า Public Bucket
หาก bucket ของคุณเปิดให้เข้าถึงแบบสาธารณะอยู่แล้ว สามารถตั้งค่าได้เหมือนกับ origin ทั่วไป
- เข้าสู่ระบบ ByteArk Fleet (opens new window) แล้วคลิก จากนั้นเลือก Web CDN
- กรอกข้อมูลในฟอร์ม
- Your website: โดเมนหรือ subdomain ที่ต้องการให้บริการผ่าน CDN (เช่น
cdn.example.com) - Your server address: hostname แบบ virtual-hosted-style ของ bucket เช่น
my-bucket.s3.ap-southeast-1.amazonaws.com(Amazon S3) หรือmy-bucket.storage.googleapis.com(Google Cloud Storage)
- Your website: โดเมนหรือ subdomain ที่ต้องการให้บริการผ่าน CDN (เช่น
- คลิก
- เมื่อระบบตรวจสอบผ่านแล้ว ให้ชี้ DNS record ของโดเมนไปยัง CNAME ที่แสดงในหน้า Service
คุณสามารถเปลี่ยน hostname ของ bucket ได้ภายหลังที่เมนู Settings > Origin ดูรายละเอียดที่ เปลี่ยนที่อยู่ของเซิร์ฟเวอร์ต้นทาง (Origin)
# ตั้งค่า Private Bucket ด้วย Request Signing
หาก bucket ของคุณปิดการเข้าถึงแบบสาธารณะ (private) ให้เปิดใช้งาน Request Signing เพื่อให้ Web CDN ยืนยันตัวตนทุกคำขอที่ส่งไปยัง bucket แทนคุณ ฟีเจอร์นี้ใช้งานได้เฉพาะกับ bucket ของผู้ให้บริการ ที่ Web CDN รู้จัก hostname ตามรายการด้านล่างเท่านั้น
# ผู้ให้บริการที่รองรับ
Web CDN จะตรวจจับ hostname ของ origin ต่อไปนี้โดยอัตโนมัติ ซึ่งเป็นเงื่อนไขสำคัญที่ทำให้ฟีเจอร์ Request Signing ทำงานได้
| ผู้ให้บริการ | รูปแบบ hostname ของ origin | ตัวอย่าง |
|---|---|---|
| Amazon S3 | *.s3.amazonaws.com, *.s3-<region>.amazonaws.com, *.s3.<region>.amazonaws.com | my-bucket.s3.ap-southeast-1.amazonaws.com |
| Google Cloud Storage | *.storage.googleapis.com | my-bucket.storage.googleapis.com |
| Firebase Hosting/Storage | *.firebaseapp.com | my-project.firebaseapp.com |
| Tencent Cloud COS | *.<region>.myqcloud.com | my-bucket.cos.ap-bangkok.myqcloud.com |
| IBM Cloud Object Storage | *.cloud-object-storage.appdomain.cloud | my-bucket.s3.us-south.cloud-object-storage.appdomain.cloud |
| Huawei Cloud OBS | *.obs.<region>.myhuaweicloud.com | my-bucket.obs.ap-southeast-1.myhuaweicloud.com |
| ByteArk Storage | *.s3.byteark.com, *.st-th-1.byteark.com, *.st-th-2.byteark.com, *.st-th.byteark.com | my-bucket.s3.byteark.com |
TIP
ให้ใช้ hostname แบบ virtual-hosted-style ของ bucket (<bucket>.<provider-domain>) ไม่ใช่แบบ
path-style (<provider-domain>/<bucket>) เนื่องจากรูปแบบ path-style จะไม่ตรงกับ pattern ด้านบน
WARNING
บริการ storage ที่รองรับ S3-compatible API อื่นๆ เช่น DigitalOcean Spaces, Backblaze B2, Wasabi หรือ Azure Blob Storage ยังสามารถนำมาใช้เป็น origin ได้ แต่ hostname ของบริการเหล่านี้จะไม่ถูกจดจำ ตามรายการด้านบน ทำให้ Web CDN ไม่สามารถเซ็นชื่อคำขอ (sign request) ไปยัง origin เหล่านี้ได้ จึงใช้ได้ เฉพาะกับ bucket/container ที่เปิดเป็น public เท่านั้น หากต้องการใช้ Request Signing กับผู้ให้บริการ รายอื่น หรือ origin ที่มี hostname ไม่ตรงกับ pattern ในรายการด้านบน กรุณาติดต่อทีมสนับสนุนของ ByteArk ที่ support@byteark.com
- ตั้งค่า service ตามขั้นตอนด้านบนก่อน โดยใช้ hostname ของ bucket เป็น Your server address
- เปิด service นั้น ไปที่แท็บ Settings แล้วมองหาแผง Origin Request Setting
- ในส่วน Request Signing ให้ตั้งค่า Authentication Type เป็น AWS S3 (Signature V2)
- กรอกข้อมูล
- Bucket Name — ชื่อ bucket เท่านั้น (ไม่ใช่ hostname เต็ม)
- Access Key — access key ID ของ storage
- Access Secret — secret access key ของ storage
- คลิก
WARNING
ปัจจุบัน Request Signing รองรับเฉพาะ AWS Signature Version 2 เท่านั้น
ข้อควรทราบเพิ่มเติม
- Web CDN service หนึ่งรายการรองรับ origin bucket และชุดข้อมูลยืนยันตัวตนได้ เพียงชุดเดียว ไม่รองรับการกำหนดหลาย bucket หรือแยกตาม path (ความสามารถดังกล่าวมีเฉพาะในผลิตภัณฑ์ streaming/HLS CDN ของ ByteArk เท่านั้น)
- เมื่อแก้ไขการตั้งค่าที่มีอยู่แล้ว หากเว้นช่อง Access Secret ไว้ว่าง ระบบจะยังคงใช้ secret เดิม ที่บันทึกไว้ — กรอกเฉพาะเมื่อต้องการเปลี่ยนค่าใหม่เท่านั้น
- หากต้องการยกเลิกการเซ็นชื่อคำขอและกลับไปใช้ bucket แบบ public ให้ตั้งค่า Authentication Type กลับเป็น None
# แก้ปัญหาเบื้องต้น
- ได้รับ 403 Forbidden จาก origin — ตรวจสอบว่า bucket/object เปิดเป็น public-read หรือ ตรวจสอบว่าเปิดใช้งาน Request Signing พร้อมกรอก Bucket Name, Access Key และ Access Secret ถูกต้อง และ region ของ bucket ยังรองรับ Signature V2 อยู่
- เชื่อมต่อ origin ไม่ได้ / ตั้งค่าไม่ผ่านการตรวจสอบ — ตรวจสอบว่าใช้ hostname แบบ virtual-hosted-style ของ bucket และ bucket มีอยู่จริงใน region ที่ระบุใน hostname นั้น
- แก้ไขไฟล์แล้วแต่เนื้อหาไม่อัปเดต — เป็นพฤติกรรมของการแคช ไม่ใช่ปัญหาจาก origin ดูรายละเอียดที่ Purging Cache และ Cache Settings