เมื่อใดควรใช้ Amazon Cloudfront หรือ S3


232

มีการใช้กรณีที่ให้ยืมตัวเองดีกว่า Amazon Cloudfront มากกว่า s3 หรือวิธีอื่น ๆ หรือไม่? ฉันพยายามเข้าใจความแตกต่างระหว่าง 2 ถึงตัวอย่าง


1
หากคุณให้บริการไฟล์มีเพียง CloudFront ที่ให้คุณมี HTTPS ในโดเมนที่กำหนดเอง ที่ปิดผนึกไว้สำหรับเรา
mlissner

คำตอบ:


373

Amazon S3ได้รับการออกแบบสำหรับการจัดเก็บไฟล์ความจุสูงและราคาประหยัดในภูมิภาคเดียวโดยเฉพาะ * ค่าใช้จ่ายในการจัดเก็บและแบนด์วิดท์ค่อนข้างต่ำ

Amazon CloudFrontเป็นเครือข่ายการจัดส่งเนื้อหา (CDN) ซึ่งพร็อกซีและแคชข้อมูลเว็บที่ตำแหน่งขอบใกล้กับผู้ใช้มากที่สุด

เมื่อผู้ใช้ปลายทางร้องขอวัตถุโดยใช้ชื่อโดเมนพวกเขาจะถูกส่งไปยังตำแหน่งขอบที่ใกล้ที่สุดโดยอัตโนมัติเพื่อการส่งเนื้อหาที่มีประสิทธิภาพสูง ( Amazon )

ข้อมูลที่ให้บริการโดย CloudFront อาจหรืออาจมาจาก S3 เนื่องจากมันเหมาะสำหรับความเร็วในการจัดส่งมากขึ้นแบนด์วิดท์จึงมีค่าใช้จ่ายเพิ่มขึ้นเล็กน้อย

หากฐานผู้ใช้ของคุณเป็นภาษาท้องถิ่นคุณจะไม่เห็นความแตกต่างในการทำงานกับ S3 หรือ CloudFront มากเกินไป (แต่คุณต้องเลือกตำแหน่งที่เหมาะสมสำหรับที่เก็บข้อมูล S3 ของคุณ: US, EU, APAC) หากฐานผู้ใช้ของคุณกระจายไปทั่วโลกและความเร็วเป็นสิ่งสำคัญ CloudFront อาจเป็นตัวเลือกที่ดีกว่า

ทั้งสอง S3 และ CloudFront ช่วยให้ชื่อแทนโดเมน แต่ CloudFront ช่วยนามแฝงหลายเพื่อให้d1.mystatics.com, d2.mystatics.comและd3.mystatics.comสามารถชี้ไปที่สถานที่เดียวกันการเพิ่มความสามารถในการดาวน์โหลดแบบขนาน (ใช้ไปนี้จะได้รับการแนะนำโดยGoogleแต่ด้วยการแนะนำของ SPDY และ HTTP / 2 เป็นของ ความสำคัญน้อยกว่า)

CloudFront ยังรองรับ CORSตั้งแต่ปี 2014 (ขอบคุณ sergiopantoja)

* หมายเหตุ: S3 สามารถทำซ้ำไปยังภูมิภาคเพิ่มเติมโดยอัตโนมัติในปี 2558


10
ขอบคุณคำตอบยอดเยี่ยม
Kamo

3
มีความแตกต่างสำหรับแบบอักษรบนเว็บเนื่องจาก CloudFront ไม่รองรับ CORS อย่างสมบูรณ์ มันแคชส่วนหัวในการตอบสนอง S3 แต่สำหรับการสนับสนุน CORS เต็มส่วนหัวบางส่วนควรแตกต่างกันไปขึ้นอยู่กับเซิร์ฟเวอร์ที่ร้องขอ (ต้นกำเนิด) หลีกเลี่ยง
Cymen

11
เพื่อให้การปรับปรุงนี้ CloudFront สนับสนุน CORS ตอนนี้: aws.amazon.com/about-aws/whats-new/2014/06/26/…
sergiopantoja

พึงระวังว่า Cloudfront แสดงเนื้อหาอย่างรวดเร็ว การตั้งค่าอายุสูงสุดเป็นมากกว่าหนึ่งวันไม่ได้หมายความว่าเนื้อหาของคุณจะไม่ถูกขับออกหากไม่ได้สัมผัสเป็นเวลา 61 นาที ไม่ค่อยได้ใช้สำหรับเนื้อหาเฉพาะของผู้ใช้เท่าที่จะเข้าถึงได้ไม่บ่อยนัก
BobB

53

CloudFront และ S3 ถังจะไม่เหมือนกัน ในแง่ของคนธรรมดา: CloudFront ช่วยให้คุณสามารถเร่งการส่งเนื้อหาของเนื้อหาเว็บของคุณผ่านเครือข่ายการจัดส่งเนื้อหา (CDN) ในสถานที่ขอบในขณะที่ S3 Buckets เป็นที่ที่คุณจัดเก็บไฟล์จริงของคุณ แหล่งที่มาของ CloudFront อาจไม่ได้มาจาก S3 แต่เพื่อให้มองเห็นการรวม S3 ได้ง่ายขึ้นด้วย CloudFront: ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณ! แผนภาพนี้แสดงให้เห็นถึงความแตกต่างอย่างชัดเจน
Rajan Sharma

28

ความแตกต่างที่สำคัญอีกประการหนึ่งคือ CloudFront ช่วยให้คุณสามารถสะท้อนไซต์บนเซิร์ฟเวอร์ของคุณ Cloudfront จะแคชไฟล์เช่นรูปภาพ mp3 หรือวิดีโอโดยใช้เครือข่ายการจัดส่งเนื้อหา

สิ่งนี้จะช่วยให้คุณไม่ต้องทำซ้ำสินทรัพย์ของคุณเช่นเดียวกับเมื่อคุณใช้ Amazon S3

อย่างไรก็ตามหลังจากไฟล์หมดอายุ CloudFront จะดึงข้อมูลอีกครั้งจากเว็บไซต์ที่ใช้งานของคุณ (มีค่าใช้จ่าย) ดังนั้นส่วนของคลาวด์จึงเหมาะสำหรับไฟล์ที่เข้าถึงบ่อยและน้อยกว่าสำหรับไฟล์ที่เข้าถึงไม่บ่อย

วิธีหนึ่งในการตั้งค่าการหมดอายุของไฟล์สำหรับ apache อยู่ใน. htaccess ตัวอย่างเช่น

<filesMatch "\\.(mp3|mp4)$">
Header set Cache-Control "max-age=648000, private"
</filesMatch>

20

Amazon CLOUDFRONT และ S3 เป็นบริการที่แตกต่างกันสองบริการโดย Amazon Web Services

Amazon S3เป็นบริการจัดเก็บข้อมูลที่เราสามารถจัดเก็บไฟล์คงที่เช่น:

css, รูปภาพ, javascripts, วิดีโอ, ฯลฯ ...

Amazon CloudFrontเป็นเครื่องมือระดับกลางซึ่งอยู่ระหว่างผู้ใช้ที่ร้องขอไฟล์จาก AWS และศูนย์ข้อมูล S3 ในภูมิภาคเฉพาะ CloudFront ใช้เพื่อเร่งการกระจายเนื้อหาเว็บแบบคงที่และไดนามิกของคุณจาก S3 ถึงผู้ใช้

คุณสามารถเข้าใจได้ดีขึ้นจากตัวอย่าง: -

ตัวอย่างเช่น S3 ของคุณตั้งอยู่ในภูมิภาค AWS US East (N. Virginia) ซึ่งเป็นที่ตั้งศูนย์ข้อมูลเพื่อเก็บไฟล์ของคุณ

หากผู้ใช้จากอินเดียพยายามเข้าถึงไฟล์จากเซิร์ฟเวอร์ AWS ในเวอร์จิเนียผู้ใช้จะต้องไปที่สถานที่นั้นพร้อมคำขอและต้องใช้เวลานาน

สิ่งที่ CloudFront ทำก็คือมันเป็นตัวกลางระหว่างผู้ใช้กับ AWS S3


ไฟล์ที่ใช้บ่อยที่สุดสามารถแคชบน CloudFront และสิ่งที่มันทำคือมันทำซ้ำไฟล์เหล่านั้นในตำแหน่งขอบ (เพื่อส่งเนื้อหาไปยังผู้ใช้ปลายทางด้วยเวลาแฝงที่ต่ำกว่า Amazon CloudFront ใช้เครือข่ายทั่วโลกของตำแหน่งขอบสำหรับการส่งเนื้อหา)

หากเนื้อหาอยู่ในตำแหน่งขอบที่มีเวลาแฝงต่ำที่สุด CloudFront จะส่งเนื้อหาทันที หากเนื้อหาไม่อยู่ในตำแหน่งขอบนั้นในขณะนี้ CloudFront จะดึงข้อมูลจากที่ฝากข้อมูล Amazon S3 และมอบให้กับผู้ใช้เร็วที่สุดเท่าที่จะทำได้

ทุกคำขอจะได้รับ DNS ใหม่จาก CloudFront ถึง S3 ดังนั้นสิ่งนี้จะส่งผลให้ปริมาณการใช้งานลดลงรวมถึงการประมวลผลคำขอแบบขนานมากขึ้น

ต่อไปนี้เป็นรายการของที่ตั้งขอบปัจจุบันตามกรกฎาคม -2016: -

สหรัฐ

  • Ashburn, VA (3)
  • แอตแลนตา
  • ชิคาโกรัฐอิลลินอยส์
  • Dallas / Fort Worth, TX (2)
  • เฮย์เวิร์ดแคลิฟอร์เนีย
  • แจ็กสันวิลล์
  • ลอสแองเจลิส, แคลิฟอร์เนีย (2)
  • ไมอามี
  • นิวยอร์ก, นิวยอร์ก (3)
  • นิวอาร์กนิวเจอร์ซีย์
  • พาโลอัลโตแคลิฟอร์เนีย
  • ซานโฮเซ่แคลิฟอร์เนีย
  • ซีแอตเทิล
  • เซาท์เบนด์, IN
  • เซนต์หลุยส์

ยุโรป

  • อัมสเตอร์ดัม, เนเธอร์แลนด์ (2)

  • ดับลินไอร์แลนด์

  • แฟรงค์เฟิร์ต, เยอรมนี (3)

  • ลอนดอน, อังกฤษ (3)

  • มาดริด, สเปน

  • มาร์เซย์, ฝรั่งเศส

  • มิลาน, อิตาลี

  • ปารีส, ฝรั่งเศส (2)

  • สตอกโฮล์มสวีเดน

  • วอร์ซอว์, โปแลนด์

เอเชีย

  • เจนไนอินเดีย

  • ฮ่องกง (2)

  • มุมไบประเทศอินเดีย

  • มะนิลาประเทศฟิลิปปินส์

  • นิวเดลีอินเดีย

  • โอซาก้าประเทศญี่ปุ่น

  • โซล, เกาหลี (3)

  • สิงคโปร์ (2)

  • ไทเปไต้หวัน

  • โตเกียวญี่ปุ่น (2)

ออสเตรเลีย

  • เมลเบิร์นออสเตรเลีย

  • ซิดนีย์ออสเตรเลีย

อเมริกาใต้

  • เซาเปาโล, บราซิล

  • ริโอเดอจาเนโรประเทศบราซิล

จากนี้คุณสามารถสรุปได้ว่าหากผู้ใช้ถูก จำกัด มาจากภูมิภาคเดียวกับ S3 ที่โฮสต์อยู่คุณไม่จำเป็นต้องไปที่ CloudFront และถ้าจำนวนผู้ใช้เพิ่มขึ้นในระดับโลกคุณควรใช้ CloudFront อย่างแน่นอน เพื่อความหน่วงและการควบคุมการจราจรที่ดีขึ้น


1
นี่คือคำตอบที่ดีที่สุด
João Otero

14

อีกกรณีสำหรับการใช้ CloudFront เหนือ S3 คือคุณสามารถใช้ใบรับรอง SSL ไปยังโดเมนที่กำหนดเองใน CloudFront ในขณะที่คุณไม่สามารถใช้ S3 เหตุผลที่ดีพอสมควร!


2
และด้วยตัวจัดการใบรับรองใหม่มันง่ายมาก!
phatmann

7

Amazon S3 เป็น Simple Storage Service ซึ่งสามารถใช้ข้อมูลจำนวนมากเช่นวิดีโอ, รูปภาพ, PDF และอื่น ๆ

CloudFront เป็นเครือข่ายการจัดส่งเนื้อหาซึ่งอยู่ใกล้กับผู้ใช้ปลายทางและใช้เพื่อทำให้ข้อมูลมีอยู่ใน Amazon S3 ในเวลาที่น้อยที่สุด

กรณีใช้งานตัวอย่างคือ Video on Demand

  1. คุณจัดเก็บวิดีโอไว้ในที่เดียว S3 เก็บวิดีโอที่บันทึกไว้ล่วงหน้าทั้งหมดในรูปแบบที่แตกต่างกัน
  2. คุณมีกรณีผู้ใช้ทั่วโลก
  3. CloudFront ใช้เพื่อแคชวิดีโอไปยังตำแหน่งขอบ สามารถใช้เพื่อส่งเนื้อหาไปยังผู้ใช้ปลายทาง ตำแหน่งจะถูกหยิบขึ้นมาโดยอัตโนมัติตามตำแหน่งขอบกายภาพที่ใกล้เคียงที่สุด ปัจจุบันมีประมาณ 51 ตำแหน่งขอบ

ข้อดีของการใช้ CloudFront สำหรับกรณีการใช้งานที่ถูกต้อง:

  1. ปรับปรุง Latency - ประสบการณ์ของผู้ใช้ที่ดียิ่งขึ้น
  2. ลดค่าใช้จ่ายในการถ่ายโอนข้อมูลที่เป็นไปได้ เนื่องจากข้อมูลไม่ได้ถ่ายโอนทุกครั้งจากที่เก็บข้อมูล S3 เดียวกันในภูมิภาค AWS ที่เฉพาะเจาะจง

กรณีการใช้ที่เป็นไปได้อื่น ๆ :

  1. สตรีมมิงสด
  2. การเล่นเกม
  3. การเร่งความเร็วเว็บไซต์

4

สิ่งหนึ่งที่พลาดนี่คือ:

Amazon Cloudfront ยังเสนอราคาที่ต่ำกว่า Amazon S3 ที่ระดับการใช้งานที่สูงขึ้น

  • Cloudfront CDN ใช้สำหรับการกระจายเนื้อหาข้ามเซิร์ฟเวอร์หลายเครื่องกระจายตามพื้นที่ภูมิศาสตร์ (CSS, JS)

  • ในขณะที่ s3 เป็นมากกว่าแหล่งเก็บทรัพยากรที่ใช้น้อยกว่าต่อผู้ใช้ (ภาพผู้ใช้, PDF)

คุณสามารถให้บริการทรัพยากร Cloudfront ของคุณจากที่เก็บข้อมูล s3 อย่างสมบูรณ์ผ่านทางเว็บเซิร์ฟเวอร์ของคุณ

( มีประโยชน์ในสถานการณ์ที่เว็บเซิร์ฟเวอร์ของคุณรวบรวมและจัดเก็บรูปภาพและจาวาสคริปต์ไว้ล่วงหน้าเก็บไว้ใน s3 หมายถึงลดจำนวนหน่วยความจำเซิร์ฟเวอร์ของคุณ )

ตัวอย่างบน Heroku Slugs (สามารถลดขนาดแอปพลิเคชันที่เป็นไปตามการใช้ s3 และการห่อด้วย CDN ที่ด้านหน้าของคลาวด์จะช่วยเพิ่มปริมาณงาน)


2

ก่อนอื่นผมขออธิบายว่า Amazon S3 เป็น Cloud Storage และ Cloud Front เป็นเครือข่ายการส่งเนื้อหา (CDN)

ดังนั้นคุณสามารถใช้เพื่อจัดเก็บไฟล์บน S3 และสามารถสร้างการกระจายเพื่อให้บริการเนื้อหาผ่านอินเทอร์เน็ต เช่นเดียวกับคุณสามารถสร้างการกระจายสำหรับภูมิภาคเฉพาะ



1

Amazon S3 เป็นแพลตฟอร์มการจัดเก็บวัตถุที่ยอดเยี่ยมหากคุณกำลังมองหาระบบจัดเก็บข้อมูลแบบกระจายทั่วโลกเพื่อป้องกันภูมิภาค / โซนที่กำลังจะล่ม นอกจากนี้ยังเหมาะสำหรับเนื้อหาแบบสแตติก / คงที่ที่ไม่ได้ทำธุรกรรมและการเปลี่ยนแปลงเช่นรูปภาพวิดีโอภาพสำรองข้อมูล ฯลฯ หวังว่าจะช่วยได้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.