[Update] วิธีการสร้างเว็บไซต์แบบ Static โดยใช้ S3 + CloudFront (ใช้งาน OAC)

[Update] วิธีการสร้างเว็บไซต์แบบ Static โดยใช้ S3 + CloudFront (ใช้งาน OAC)

ในบทความอัปเดตนี้ เราจะมาแนะนำวิธีใช้งาน Origin Access Control (OAC) ในการควบคุมการ Access จาก CloudFront ไปยัง Amazon S3 ที่เป็น Object Storage Service โดยอธิบายเนื้อหาไปพร้อมกับการใช้งานจริงครับ
2025.10.09

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

เนื่องจาก UI ของขั้นตอนการสร้าง Amazon CloudFront มีการเปลี่ยนแปลง จึงมาอัปเดตในบทความนี้ครับ

เป้าหมาย

diagram-s3cloudfront_oac-202509

Service ที่ใช้ในบทความนี้คือ:

  • Amazon S3
    • Buckets
  • Amazon CloudFront
    • Distributions
    • Origin access

เตรียม S3 Bucket สำหรับใช้ Web Hosting

การสร้าง Buckets ใน Amazon S3

Login เข้ามาที่ AWS Management Console แล้วเลือก Thailand Region เตรียมไว้
thailand_region-202509

ค้นหาและเลือก S3
search_s3-202509

เลือก General purpose buckets จากเมนูด้านซ้าย และคลิก Create bucket ด้านขวา
create_s3_web_hosting-1

การตั้งค่า General configuration
・AWS Region: Asia Pacific (Thailand) ap-southeast-7 (หากเลือก Thailand Region เตรียมไว้ในตอนแรกก็จะแสดงแบบนี้ ดังนั้นโปรดตรวจสอบในส่วนนี้ให้แน่ใจว่าดำเนินการอยู่ใน Thailand Region)
・Bucket name: tinnakorn-test-s3 (ป้อนชื่อตามต้องการ)
create_s3_web_hosting-2

เลื่อนลงมาด้านล่างสุด คลิกปุ่ม Create bucket

เตรียมไฟล์ HTML

ครั้งนี้จะสร้างไฟล์ HTML โดยเปิด Notepad ใน Windows แล้วป้อนโค้ดตามด้านล่างนี้ แล้วบันทึกเป็นชื่ออะไรก็ได้ เช่น index.html (ต้องลงท้ายด้วย .html)

index.html
			
			<html><body>test</body></html>

		

แล้วจะอัปโหลดใน Bucket ในขั้นตอนถัดไป

อัปโหลดไฟล์ลงใน Bucket

เมื่อเตรียมไฟล์เสร็จแล้ว เข้าไปที่หน้า Bucket ของเรา
เลือกแท็บ Objects แล้วอัปโหลดไฟล์โดยคลิก Upload แล้วเลือก File ที่เราเตรียมไว้
หรือคลิกที่ไฟล์ค้างไว้แล้วลากมาวางใน Object ตามรูปภาพก็ได้
upload_html_to_s3-1

แล้วจะเห็นไฟล์ที่เราจะอัปโหลดแสดงขึ้นมาแบบนี้ จากนั้นคลิก Upload ด้านล่างสุด
upload_html_to_s3-2

แล้วคลิก Close ก็จะแสดงหน้าจอแบบนี้
upload_html_to_s3-3

สร้าง Amazon CloudFront สำหรับแสดงผลเว็บไซต์จาก S3

ไปที่ช่อง Search แล้วค้นหาและเลือก CloudFront
sb5rqwf5b7ul2yk5yr2g

กรณีที่ยังไม่เคยสร้าง Distribution มาก่อนจะแสดงหน้าจอเริ่มต้นของ CloudFront แบบนี้
จะคลิก Create a CloudFront distribution จากหน้าจอนี้เลยก็ได้
stqtirwycmclawpxbv4q

หรือจะเลือก Distributions จากเมนูด้านซ้าย แล้วคลิก Create distribution ด้านขวาที่หน้าจอนี้ก็ได้
wsydv7ezhi7xpwfftjav

แล้วเริ่มสร้าง Distribution ดังนี้

Step 1: Get started

Distribution name: tinnakorn-test-cf
Description - optional: tinnakorn-test-cf
・คลิก Next
cf_for_s3-1

Step 2: Specify origin

Origin type
Amazon S3

Origin
S3 origin: คลิก Browse S3
cf_for_s3-2

ค้นหาและเลือก Bucket ที่ใช้เป็น Web Hosting แล้วคลิก Choose
cf_for_s3-3

แล้ว S3 origin จะแสดงเป็น [bucket_name].s3.ap-southeast-7.amazonaws.com แบบนี้
cf_for_s3-4

Settings
Allow private S3 bucket access to CloudFront: ติ๊ก ✅️ Allow private S3 bucket access to CloudFront - Recommended ตามค่าเริ่มต้น

※ในส่วนของ Origin settings จะไม่ตั้งค่าใดๆ แต่จะตั้งค่าแค่ Cache settings ในขั้นตอนถัดไป
cf_for_s3-5

ให้ตั้งค่า Cache settings ดังนี้
Cache settings: Customize cache settings (เมื่อเลือกแล้ว จะมีฟังก์ชันต่างๆ ขยายออกมา)
Viewer protocol policy: Redirect HTTP to HTTPS
Allowed HTTP methods: GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
Cache policy: CachingOptimized
Origin request policy - optional: CORS-S3Origin
・คลิก Next
cf_for_s3-6

Step 3: Enable security

Enable security
Web Application Firewall (WAF): Do not enable security protections (หากต้องการเพิ่มความปลอดภัยแนะนำให้เปิดใช้งาน)
・คลิก Next
cf_for_s3-7

ดูรายละเอียดเพิ่มเติมเกี่ยวกับ WAF ได้ที่ลิงก์ด้านล่างนี้
https://dev.classmethod.jp/articles/aws-2022-introductory-edition-aws-waf/

Step 4: Review and create

ตรวจสอบการตั้งค่าตั้งแต่ Step 1 - Step 3 แล้วคลิก Create distribution

เมื่อสร้างเสร็จแล้วจะแสดงหน้าจอแบบนี้ แล้วรอระบบเริ่มต้นสักครู่จนกว่าจะ Deploy เสร็จสิ้น
cf_for_s3-8

ตรวจสอบ Bucket policy ใน S3

เข้ามาที่หน้าจอ S3 Bucket ของเรา แล้วเลือกแท็บ Permissions
check_policy_cf_in_s3-4

เลื่อนลงมาด้านล่างที่หัวข้อ Bucket policy ก็จะเห็น Policy ที่กำหนดค่าของ CloudFront กับ S3 แบบนี้
check_policy_cf_in_s3-5

ตั้งค่า Default root object

มาที่หน้าจอ CloudFront เลือกแท็บ General แล้วคลิก Edit ในหัวข้อ Settings
set_default_root_object-1

เลื่อนลงมาที่หัวข้อ Default root object - optional แล้วป้อน path index.html และคลิก Save changes
set_default_root_object-2

ดูที่ Default root object ในช่อง Settings จะเห็นว่ามี index.html แสดงขึ้นมาแล้ว
set_default_root_object-3

ทดสอบแสดงผล Web Hosting ของ S3 ด้วย Distribution domain name ของ CloudFront

มาที่หน้าจอ CloudFront แล้วคลิกไอคอนคัดลอกที่ Distribution domain name เตรียมไว้
test_domain_name_cf-1_v2

แล้วนำ Distribution domain name มาเปิดบนเว็บเบราว์เซอร์ ก็จะแสดงหน้าจอเว็บไซต์แบบนี้

			
			https://xxxxxxxxxxxxxx.cloudfront.net

		

test_domain_name_cf-2

การลบ AWS Resource ที่สร้างขึ้น

การลบ General purpose buckets ใน S3

※ก่อนอื่นเราต้องทำให้ Bucket เป็น Empty ก่อน จึงจะสามารถลบได้

เข้ามาที่หน้าจอ Amazon S3 แล้วดำเนินการดังนี้

  1. เลือก General purpose buckets จากเมนูด้านซ้าย
  2. ค้นหา S3 Bucket ที่จะลบ
  3. เลือก S3 Bucket ที่จะลบ
  4. เลือก Empty
    delete_s3_cf-1

ป้อน permanently delete ลงในช่องตามคำแนะนำ แล้วคลิก Empty
delete_s3_cf-2

ระบบจะเปลี่ยนมาหน้าจอสถานะการลบ แล้วคลิก Exit
delete_s3_cf-3

ค้นหาและเลือก S3 Bucket ที่จะลบอีกครั้ง แล้วเลือก Delete
delete_s3_cf-4

แล้วป้อนชื่อ S3 Bucket ลงในช่องตามคำแนะนำ แล้วคลิก Delete bucket
delete_s3_cf-5

การลบ Distributions ใน CloudFront

※ก่อนอื่นเราต้อง Disable ตัว Distribution ก่อน จึงจะสามารถลบได้

เข้ามาที่หน้าจอ Amazon CloudFront แล้วดำเนินการดังนี้
เลือก Distributions จากเมนูด้านซ้าย แล้วเลือก ID ที่จะลบ แล้วคลิก Disable
delete_cf_s3-1

คลิก Disable
delete_cf_s3-2

แล้วเลือก ID ที่จะลบอีกครั้ง แล้วคลิก Delete
delete_cf_s3-3

คลิก Delete
delete_cf_s3-4

ต่อไปเลือก Origin access ในหัวข้อ Security จากเมนูด้านซ้าย แล้วเลือก ID ที่จะลบ และคลิก Delete
delete_cf_s3-5

แล้วคลิก Delete
delete_cf_s3-6

เพียงเท่านี้การลบ Resource ก็เสร็จเรียบร้อย

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP จากบริษัท Classmethod (Thailand) ครับ !

บทความที่เกี่ยวข้อง

この記事をシェアする

FacebookHatena blogX

関連記事

[Update] วิธีการสร้างเว็บไซต์แบบ Static โดยใช้ S3 + CloudFront (ใช้งาน OAC) | DevelopersIO