ดิสทริบิวชันและต้นทางของ CloudFront
สร้างดิสทริบิวชัน CloudFront กำหนดค่าต้นทาง S3 และ HTTP กำหนดเอง พร้อมทำความเข้าใจการควบคุมการเข้าถึงต้นทางเพื่อรักษาความปลอดภัยของ S3
ดิสทริบิวชันและต้นทางของ CloudFront เป็นบทเรียน Cloud & IT Cert Prep ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cloud & IT Cert Prep และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน
Amazon CloudFront คืออะไร
Amazon CloudFront คือ Content Delivery Network (CDN) ทั่วโลกของ AWS ที่แคชและส่งมอบเนื้อหาจาก ตำแหน่งขอบเครือข่าย ซึ่งกระจายอยู่ในเมืองกว่า 400 แห่งในกว่า 90 ประเทศ เมื่อผู้ใช้ร้องขอเนื้อหา CloudFront จะส่งเนื้อหาจากตำแหน่งขอบเครือข่ายที่ใกล้ที่สุด ทำให้เวลาแฝงลดลงอย่างมากเมื่อเทียบกับการดึงข้อมูลจากเซิร์ฟเวอร์ต้นทาง
CloudFront ไม่ได้ใช้สำหรับไฟล์แบบคงที่เท่านั้น แต่ยังช่วยเร่งเนื้อหาแบบไดนามิก API และการสตรีมวิดีโอด้วย โดยผสานการทำงานกับบริการ AWS อื่น ๆ เช่น S3, ALB, Lambda@Edge, WAF และ Shield จึงเป็นชั้นการกระจายเนื้อหามาตรฐานสำหรับสถาปัตยกรรม AWS สมัยใหม่
ดิสทริบิวชันของ CloudFront
ดิสทริบิวชันของ CloudFront คือหน่วยการกำหนดค่าหลัก โดยกำหนดสิ่งต่อไปนี้: ต้นทางอย่างน้อยหนึ่งรายการ (ตำแหน่งที่จัดเก็บเนื้อหา) พฤติกรรมแคช (วิธีแคชเส้นทาง URL ที่แตกต่างกัน) การตั้งค่าความปลอดภัย และระดับราคา คุณเข้าถึงเนื้อหาผ่านชื่อโดเมนของดิสทริบิวชัน (เช่น d1234abcdef.cloudfront.net) หรือโดเมนแบบกำหนดเอง (เช่น cdn.example.com) โดยใช้ระเบียน CNAME หรือ ALIAS
หลังจากสร้างแล้ว ดิสทริบิวชันจะใช้เวลา 10–15 นาทีในการนำไปใช้งานทั่วโลกในตำแหน่งขอบเครือข่ายทั้งหมด การเปลี่ยนแปลงดิสทริบิวชันที่มีอยู่ก็ใช้เวลาหลายนาทีในการเผยแพร่เช่นกัน ในอดีตมีดิสทริบิวชันสองประเภท แต่ปัจจุบันดิสทริบิวชันทั้งหมดใช้ส่วนติดต่อการกำหนดค่าแบบรวมเป็นหนึ่งเดียว
# Create a CloudFront distribution backed by S3
aws cloudfront create-distribution \
--distribution-config '{
"Origins": {
"Quantity": 1,
"Items": [{
"Id": "S3Origin",
"DomainName": "my-bucket.s3.amazonaws.com",
"S3OriginConfig": {"OriginAccessIdentity": ""}
}]
},
"DefaultCacheBehavior": {
"TargetOriginId": "S3Origin",
"ViewerProtocolPolicy": "redirect-to-https",
"CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6"
},
"Enabled": true,
"Comment": "My S3 distribution",
"CallerReference": "2026-06-20-unique"
}'S3 เป็นต้นทางของ CloudFront
การใช้บักเก็ต S3 เป็นต้นทางของ CloudFront เป็นรูปแบบที่พบได้บ่อยที่สุดรูปแบบหนึ่ง CloudFront จะดึงออบเจ็กต์จาก S3 แคชไว้ที่ตำแหน่งขอบเครือข่าย และส่งคำขอครั้งต่อ ๆ ไปจากแคชโดยไม่ต้องเข้าถึง S3 อีกครั้ง วิธีนี้ช่วยลดค่าใช้จ่ายคำขอ S3 เพิ่มประสิทธิภาพเวลาแฝงสำหรับผู้ใช้ทั่วโลก และลดภาระแบนด์วิดท์ของ S3
หากต้องการให้บริการเว็บไซต์ที่ใช้ S3 คุณไม่จำเป็นต้องทำให้บักเก็ตเป็นสาธารณะ แต่ให้ใช้ Origin Access Control (OAC) ซึ่งเป็นสิ่งทดแทนสมัยใหม่ของ Origin Access Identity (OAI) OAC ให้สิทธิ์เฉพาะดิสทริบิวชัน CloudFront ในการอ่านจากบักเก็ต ทำให้ S3 ยังคงเป็นส่วนตัว ขณะที่ CloudFront ให้บริการเนื้อหาแก่สาธารณะ
# S3 bucket policy granting OAC access to CloudFront
{
'Version': '2012-10-17',
'Statement': [{
'Effect': 'Allow',
'Principal': {
'Service': 'cloudfront.amazonaws.com'
},
'Action': 's3:GetObject',
'Resource': 'arn:aws:s3:::my-bucket/*',
'Condition': {
'StringEquals': {
'AWS:SourceArn': 'arn:aws:cloudfront::123456789:distribution/EDFDVBD6EXAMPLE'
}
}
}]
}ต้นทาง HTTP/HTTPS แบบกำหนดเอง
CloudFront ยังรองรับ ต้นทางแบบกำหนดเอง ซึ่งหมายถึงเซิร์ฟเวอร์ HTTP หรือ HTTPS ใด ๆ ที่เข้าถึงได้จากอินเทอร์เน็ต รวมถึงอินสแตนซ์ EC2, Application Load Balancers, จุดปลายทาง API Gateway และเซิร์ฟเวอร์ภายในองค์กร ต้นทางแบบกำหนดเองทำให้ CloudFront แคชและเร่งความเร็วแอปพลิเคชันแบบไดนามิกและ API ได้ ไม่ใช่เฉพาะไฟล์แบบคงที่
เมื่อใช้ ALB เป็นต้นทางแบบกำหนดเอง ให้กำหนดค่า ALB ให้รับการเชื่อมต่อจากช่วง IP ของ CloudFront เท่านั้นในกลุ่มความปลอดภัย วิธีนี้บังคับให้ทราฟฟิกภายนอกทั้งหมดผ่าน CloudFront ทำให้ใช้กฎ WAF และยุติ TLS ที่ขอบเครือข่ายได้ ขณะที่ ALB ยังคงอยู่ภายใน AWS
Origin Access Control (OAC) กับ OAI
Origin Access Identity (OAI) เป็นวิธีดั้งเดิมในการจำกัดการเข้าถึงบักเก็ต S3 ให้เฉพาะ CloudFront โดยเป็นข้อมูลประจำตัวผู้ใช้พิเศษของ CloudFront ที่ได้รับสิทธิ์ในนโยบายบักเก็ต S3 แม้ OAI จะยังใช้งานได้ แต่ถือเป็นเทคโนโลยีเดิม
Origin Access Control (OAC) เป็นสิ่งทดแทนสมัยใหม่ OAC รองรับบักเก็ต S3 ทุกประเภท (รวมถึง S3 ใน AWS China Regions และบักเก็ตที่เข้ารหัสด้วย SSE-KMS) ใช้หลักการบริการ IAM เพื่อควบคุมได้ละเอียดขึ้น และลงนามคำขอไปยัง S3 โดยอัตโนมัติด้วย SigV4 สำหรับดิสทริบิวชันใหม่ ควรใช้ OAC แทน OAI เสมอ
นโยบายโพรโทคอลของผู้ชม
นโยบายโพรโทคอลของผู้ชม ควบคุมวิธีที่ CloudFront จัดการการเชื่อมต่อระหว่างผู้ใช้ (ผู้ชม) กับตำแหน่งขอบเครือข่าย:
- HTTP และ HTTPS: อนุญาตทั้งสองแบบ ไม่แนะนำสำหรับเนื้อหาที่มีความละเอียดอ่อน
- เปลี่ยนเส้นทาง HTTP ไปยัง HTTPS: เปลี่ยนเส้นทางคำขอ HTTP ไปยัง HTTPS อย่างโปร่งใส เป็นการตั้งค่าที่ใช้บ่อยที่สุด
- HTTPS เท่านั้น: ปฏิเสธการเชื่อมต่อ HTTP ทั้งหมด ใช้เมื่อบังคับใช้ TLS อย่างเข้มงวด
แยกจากกันนั้น นโยบายโพรโทคอลของต้นทาง จะควบคุมวิธีที่ CloudFront สื่อสารกับต้นทางของคุณ ได้แก่ HTTP เท่านั้น HTTPS เท่านั้น หรือใช้ตามผู้ชม สำหรับต้นทาง S3 ที่ใช้ OAC CloudFront จะใช้ HTTPS เสมอ
โดเมนแบบกำหนดเองและใบรับรอง SSL/TLS
หากต้องการให้บริการเนื้อหาจาก cdn.example.com แทนโดเมนของ CloudFront คุณต้องกำหนดค่า ชื่อโดเมนสำรอง (CNAME) ในการกระจายเนื้อหา และแนบ ใบรับรอง SSL/TLS จาก AWS Certificate Manager (ACM) ใบรับรอง ACM ต้องอยู่ใน รีเจียน us-east-1 (ไม่ว่าการกระจายเนื้อหาของคุณจะให้บริการการรับส่งข้อมูลจากที่ใด) เนื่องจาก CloudFront เป็นบริการระดับโลกที่จัดการจาก us-east-1
สร้างระเบียน Route 53 เป็นระเบียน ALIAS ที่ชี้ไปยังชื่อโดเมนของการกระจายเนื้อหา CloudFront จะให้บริการใบรับรองของคุณโดยอัตโนมัติสำหรับคำขอ SNI ที่ตรงกัน
# Request a certificate in us-east-1 for CloudFront
aws acm request-certificate \
--domain-name cdn.example.com \
--validation-method DNS \
--region us-east-1คลาสราคา
คลาสราคาของ CloudFront จะควบคุมว่าระบบจะใช้ตำแหน่งขอบใดเพื่อให้บริการการกระจายเนื้อหาของคุณ คลาสราคาที่สูงกว่าจะรวมตำแหน่งขอบที่มีค่าใช้จ่ายสูงกว่า (โดยทั่วไปอยู่ในรีเจียนที่มีค่าแบนด์วิดท์สูงกว่า):
- คลาสราคา 100: อเมริกาเหนือและยุโรปเท่านั้น (ค่าใช้จ่ายต่ำที่สุด)
- คลาสราคา 200: อเมริกาเหนือ ยุโรป เอเชีย ตะวันออกกลาง และแอฟริกา
- คลาสราคา All: ตำแหน่งขอบทั้งหมดทั่วโลก (ประสิทธิภาพดีที่สุด ค่าใช้จ่ายสูงที่สุด)
ใช้คลาสราคา 100 สำหรับเครื่องมือภายในหรือกลุ่มผู้ใช้ที่อยู่เฉพาะในอเมริกาเหนือและยุโรป ใช้คลาสราคา All สำหรับแอปพลิเคชันที่ให้บริการผู้ใช้ทั่วโลกอย่างแท้จริง
กลุ่มต้นทางและการสลับระบบเมื่อขัดข้อง
กลุ่มต้นทางช่วยให้ CloudFront สลับไปใช้ต้นทางสำรองเมื่อเกิดข้อขัดข้องได้ คุณกำหนดต้นทางหลักและต้นทางรองไว้ในกลุ่มเดียวกัน หากต้นทางหลักส่งคืนรหัสข้อผิดพลาด HTTP ที่กำหนด (เช่น 500, 502, 503, 504) CloudFront จะลองส่งคำขอไปยังต้นทางรองโดยอัตโนมัติ
การสลับต้นทางเมื่อขัดข้องมีประโยชน์สำหรับการกู้คืนจากภัยพิบัติ เช่น เก็บบัคเก็ต S3 หลักไว้ใน us-east-1 และเก็บข้อมูลสำรองที่ทำซ้ำไว้ใน us-west-2 เป็นต้นทางรอง CloudFront จะสลับไปยังต้นทางสำรองโดยไม่ให้ผู้ใช้สังเกตเห็นระหว่างที่ S3 ขัดข้อง โดยไม่ต้องเปลี่ยนแปลง DNS รูปแบบนี้ช่วยเสริมการทำซ้ำข้ามรีเจียนของ S3
บันทึกการเข้าถึง CloudFront
CloudFront สามารถส่ง บันทึกการเข้าถึงไปยังบัคเก็ต S3 โดยบันทึกรายละเอียดของคำขอจากผู้ชมทุกคำขอ ได้แก่ เวลา ตำแหน่งขอบ รหัสสถานะ จำนวนไบต์ที่ถ่ายโอน การพบหรือไม่พบข้อมูลในแคช ตัวแทนผู้ใช้ และข้อมูลอื่น ๆ บันทึกจะถูกส่งเป็นชุดทุกไม่กี่นาที
ใช้บันทึกการเข้าถึงเพื่อวิเคราะห์รูปแบบการรับส่งข้อมูล ระบุเนื้อหาที่มีการใช้งานหนาแน่น ตรวจสอบฟิลด์ที่เกี่ยวข้องกับความปลอดภัย (IP ตัวอ้างอิง ตัวแทนผู้ใช้) และวัดอัตราการพบข้อมูลในแคช ฟิลด์ x-edge-result-type จะระบุว่าคำขอนั้นเป็น Hit, Miss หรือ RefreshHit ที่ตำแหน่งขอบ
# Enable access logging on a distribution
aws cloudfront update-distribution \
--id EDFDVBD6EXAMPLE \
--distribution-config '{
...existing config...
"Logging": {
"Enabled": true,
"Bucket": "my-logs-bucket.s3.amazonaws.com",
"Prefix": "cloudfront-logs/",
"IncludeCookies": false
}
}' \
--if-match ETVPDKIKX0DERตำแหน่งขอบเทียบกับแคชขอบระดับรีเจียน
CloudFront มีโครงสร้างพื้นฐานสำหรับการแคชสองระดับ:
- ตำแหน่งขอบ: PoPs หลายร้อยแห่งทั่วโลกที่อยู่ใกล้ผู้ใช้ปลายทาง ให้บริการเนื้อหาที่แคชไว้ด้วยเวลาแฝงต่ำที่สุด
- แคชขอบระดับรีเจียน (RECs): แคชขนาดใหญ่กว่าและมีอายุการใช้งานนานกว่า 13 แห่ง ซึ่งอยู่ระหว่างตำแหน่งขอบกับต้นทาง ให้บริการเนื้อหาที่ได้รับความนิยมไม่มากพอจะคงอยู่ในแคชขนาดเล็กของตำแหน่งขอบ
เมื่อไม่พบคำขอในแคชของตำแหน่งขอบ CloudFront จะตรวจสอบ REC ก่อนส่งคำขอไปยังต้นทางโดยตรง RECs ทำงานโดยอัตโนมัติ คุณไม่ต้องกำหนดค่าโดยตรง แต่ช่วยเพิ่มอัตราการพบข้อมูลในแคชสำหรับเนื้อหาที่มีการเข้าถึงแบบหางยาวได้อย่างมาก และลดภาระของต้นทาง
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจแนวคิด AWS Solutions Architect (SAA-C03) จากบทเรียนนี้
สรุปบทเรียน
ในบทเรียนนี้ คุณได้เรียนรู้ว่า การกระจายเนื้อหา CloudFront จะแคชเนื้อหาไว้ที่ตำแหน่งขอบทั่วโลก OAC ช่วยให้บัคเก็ต S3 เป็นส่วนตัวในขณะที่ยังอนุญาตให้ CloudFront เข้าถึงได้ และ ต้นทางแบบกำหนดเองรองรับ ALB, API Gateway และเซิร์ฟเวอร์ HTTP ใด ๆ ใบรับรอง ACM สำหรับ CloudFront ต้องจัดเตรียมไว้ใน us-east-1 บทถัดไป เราจะสำรวจลักษณะการทำงานของแคชและการตั้งค่า TTL
คำถามที่พบบ่อย
บทเรียน “ดิสทริบิวชันและต้นทางของ CloudFront” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ดิสทริบิวชันและต้นทางของ CloudFront” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cloud & IT Cert Prep ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cloud & IT Cert Prep มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ดิสทริบิวชันและต้นทางของ CloudFront”
สร้างดิสทริบิวชัน CloudFront กำหนดค่าต้นทาง S3 และ HTTP กำหนดเอง พร้อมทำความเข้าใจการควบคุมการเข้าถึงต้นทางเพื่อรักษาความปลอดภัยของ S3 คุณปฏิบัติ Cloud & IT Cert Prep ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cloud & IT Cert Prep หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cloud & IT Cert Prep บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ดิสทริบิวชันและต้นทางของ CloudFront” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cloud & IT Cert Prep นี้ได้ไหม
ได้ บทเรียน Cloud & IT Cert Prep ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ดิสทริบิวชันและต้นทางของ CloudFront
- พฤติกรรมแคชและการตั้งค่า TTL
- URL ที่ลงนาม คุกกี้ที่ลงนาม และการจำกัดตามภูมิศาสตร์
- CloudFront ร่วมกับ WAF และ Lambda@Edge