วิธีการสร้างเว็บไซต์แบบ Static โดยใช้ S3 + CloudFront (ใช้งาน OAC)
สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ
เป้าหมาย
ครั้งนี้จะมาแนะนำเกี่ยวกับวิธีการสร้างเว็บไซต์แบบ Static โดยใช้ S3 + CloudFront (ใช้งาน OAC)
Service ที่ใช้ในบทความนี้คือ:
- Amazon S3
- Buckets
- Amazon CloudFront
- Distributions
- Origin access
การสร้าง Buckets ใน Amazon S3
Login เข้ามาที่ AWS Management Console แล้วค้นหา ?︎ S3
คลิก S3
การตั้งค่า General configuration:
» Bucket name: tinnakorn-test-s3
(ชื่ออะไรก็ได้)
» AWS Region: Asia Pacific (Singapore) ap-southeast-1
(ตรวจสอบและเลือกใช้รีเจี้ยนที่ใกล้กลับประเทศที่เราอาศัยอยู่ให้มากที่สุด)
เลื่อนลงมาด้านล่างสุด คลิกปุ่ม Create bucket
เตรียมไฟล์และอัปโหลดลงใน Bucket
เตรียมไฟล์
ก่อนอื่นให้เตรียมไฟล์ที่จะอัปโหลด ครั้งนี้จะใช้ไฟล์ประเภท HTML ที่ชื่อว่า index.html
โดยใส่โค้ดตามด้านล่างนี้
<html><body>test</body></html>
อัปโหลดไฟล์ลงใน Bucket
เมื่อเตรียมไฟล์เสร็จแล้ว เข้าไปที่หน้า Bucket ของเรา
เลือกแท็บ Objects
แล้วอัปโหลดไฟล์โดยคลิก Upload
แล้วเลือก File ที่เราเตรียมไว้
หรือคลิกที่ไฟล์ค้างไว้แล้วลากมาวางใน Object ตามรูปภาพก็ได้
ก็จะเห็นไฟล์ที่เราจะอัปโหลด จากนั้นคลิก Upload
ด้านล่างสุด
เมื่ออัปโหลดเสร็จแล้วให้คลิก Close
แล้วจะแสดงหน้าจอแบบนี้
การแสดงผลเว็บไซต์ผ่าน Amazon CloudFront
ค้นหา ?︎ CloudFront
คลิก CloudFront
การตั้งค่า Origin ของตัวอย่างนี้คือ
Origin domain: [bucket_name].s3.ap-southeast-1.amazonaws.com
(ป้อนชื่อ S3 Bucket ของเราเพื่อค้นหาแล้วเลือก ก็จะแสดงแบบนี้)
Origin access: ◎ Origin access control settings (recommended)
└ Origin access control: คลิก Create control setting
เพื่อสร้าง OAC
เมื่อมี pop-up ของ Create control setting แสดงขึ้นมา แนะนำให้ป้อน Description
ที่ต้องการเพื่อให้ค้นหา OAC ของเราได้ง่ายขึ้น เช่น tinnakorn-test-cf
และคลิก Create
ได้เลย
เมื่อสร้าง OAC เสร็จแล้วจะแสดงหน้าจอแบบนี้
เลื่อนลงมาด้านล่างที่ Cache key and origin requests
ในหัวข้อ Default cache behavior แล้วตั้งค่าดังนี้
เลือก ◎ Cache policy and origin request policy (recommended)
│ Cache policy: CachingOptimized
│ Origin request policy: CORS-S3Origin
เลื่อนลงมาด้านล่างที่หัวข้อ Settings แล้วตั้งค่าดังนี้
Default root object: ป้อนชื่อไฟล์ที่จะแสดงผล เช่น index.html
Description: ป้อนตามต้องการเพื่อให้รู้ว่า Distribution ไหนเป็นของเรา เช่น tinnakorn-test-cf
แล้วคลิก Create distribution
เมื่อแสดงหน้าจอแบบนี้ ให้คลิก Copy policy
เตรียมไว้เพื่อใช้ในการตั้งค่า Bucket policy ในขั้นตอนถัดไป
การตรวจสอบ Bucket policy ใน CloudFront
! หาก Reload หน้าเว็บไซต์โดยที่ยังไม่ได้ทำการ Copy แท็บที่ Copy policy ก็จะหายไป แต่เราสามารถเข้าไปดูในแท็บ Behaviors ของเราได้ดังนี้
เลือกแท็บ Origins
แล้วเลือก Origin name ของเรา แล้วคลิก Edit
แล้วเลื่อนลงมาด้านล่างตามคำอธิบายและรูปภาพ
Origin access: ◎ Origin access control settings (recommended)
└ Bucket policy: คลิก Copy policy
เมื่อคัดลอกเสร็จแล้วให้เลื่อนลงมาด้านล่างสุด แล้วคลิก Cancel
แล้วเริ่มทำการตั้งค่า Bucket policy ในขั้นตอนถัดไปได้เลย
ตั้งค่า Bucket policy ใน S3
กลับไปที่หน้าคอนโซลตาม Path ในรูปภาพ แล้วเลือกแท็บ Permissions
วาง Policy ที่คัดลอกมาจากขั้นตอนที่แล้ว จากนั้นเลื่อนลงมาด้านล่างสุดและคลิก Save changes
ทดสอบ Distribution domain name
กลับมาที่หน้าคอนโซล Distributions ใน CloudFront แล้วคัดลอก Distribution domain name
แล้วนำไปเปิดในเว็บเบราว์เซอร์ที่เราใช้งาน ก็จะเห็นข้อความคำว่า test ตามที่ได้สร้างไว้ก่อนหน้านี้
เพียงเท่านี้เราก็สามารถควบคุมการ Access จาก CloudFront ไปยัง Amazon S3 โดยใช้ Origin Access Control (OAC) ได้แล้วครับ
การลบ S3 Bucket และ CloudFront
การลบ S3 Bucket
เข้ามาที่คอนโซล S3 Bucket ของเรา แล้วทำการลบตามนี้
ก่อนที่เราจะลบ S3 Bucket เราต้องทำให้ Bucket ว่างก่อน โดยค้นหาชื่อและเลือก S3 Bucket ของเรา แล้วคลิก Empty
แล้วป้อน "permanently delete" ลงในช่องตามคำแนะนำ แล้วคลิก Empty
เมื่อ S3 Bucket ของเราไม่มีข้อมูลแล้ว ก็ให้ทำการลบโดยค้นหาชื่อและเลือก S3 Bucket ของเราอีกครั้ง แล้วคลิก Delete
แล้วจะเข้ามาที่หน้าจอ Delete bucket ก็ให้เราป้อนชื่อ S3 Bucket ตามคำแนะนำ เช่น tinnakorn-test-s3
แล้วคลิก Delete bucket
เพียงเท่านี้การลบ S3 Bucket ก็เสร็จเรียบร้อย
การลบ CloudFront
เข้ามาที่คอนโซล CloudFront ของเรา แล้วทำการลบตามนี้
การลบ CloudFront นี้คือการลบ Distribution ที่เราสร้างใน CloudFront
ก่อนที่เราจะลบ Distribution ใน CloudFront เราต้องปิดการใช้งาน Distribution ก่อน โดยค้นหาชื่อและเลือก Distribution ของเรา แล้วคลิก Disable
ค้นหาชื่อและเลือก Distribution ของเราอีกครั้ง แล้วคลิก Delete
เลือก Origin access
ในหัวข้อ Security จากเมนูด้านซ้าย
แล้วค้นหาชื่อและเลือก Origin access controls ของเรา แล้วคลิก Delete
สุดท้ายนี้
สำหรับผู้ใช้งานที่ต้องการดูรายเอียดที่ลึกกว่านี้ ให้ดูที่บทความนี้ได้เลย
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !