Score:0

เว็บไซต์คงที่ AWS S3 เทียบกับ CloudFront OIA

ธง si

ดูเหมือนว่ามีสองวิธีในการโฮสต์เว็บไซต์แบบคงที่บน S3/CloudFront

  1. สร้างบัคเก็ต S3 ด้วยการเข้าถึงแบบสาธารณะเต็มรูปแบบและตั้งค่า Static Website เป็น Enabled + CloudFront config
  2. สร้างบัคเก็ต S3 ที่ไม่มีการเข้าถึงสาธารณะและตั้งค่า Static Website เป็น Disabled + CloudFront config

สิ่งที่ฉันไม่ชอบเกี่ยวกับ (1) คือข้อความสีแดง "อย่าทำสิ่งนี้" ที่จ้องมองสำหรับการเข้าถึงสาธารณะ แต่มันทำงานได้อย่างสมบูรณ์แบบ

สิ่งที่ฉันไม่ชอบเกี่ยวกับ (2) คือฉันสูญเสียเว็บไซต์แบบคงที่ที่ตั้งค่าเป็นเปิดใช้งานผลประโยชน์ เช่น ทุกอย่างเปลี่ยนเส้นทางอัตโนมัติไปที่ index.html. ตอนนี้ฉันเห็นมี ต้นกำเนิด วัตถุในการตั้งค่า CloudFront แต่ใช้ได้กับโดเมนฐานของฉันเท่านั้น (เช่น mysite.com). เว็บไซต์ของฉันคือสปาและด้วย (1) ถ้าฉันไปที่ mysite.com/profile มันจะถูกต้องไปที่ mysite.com/index.html ฉันคิดว่าเป็นเพราะการเปลี่ยนเส้นทาง 404 ที่ฉันตั้งค่าไว้ แต่เมื่อ (2) ไปที่ mysite.com/profile ไม่ใช่ 404 แต่เป็นการปฏิเสธการเข้าถึง 403 ซึ่งฉันคิดว่าไม่ฉลาดที่จะเปลี่ยนเส้นทางเหมือน 404

ดังนั้นฉันควรยึดติดกับตัวเลือก (1) แม้จะมีข้อความสีแดงที่จ้องมองเกี่ยวกับการเข้าถึงสาธารณะหรือไม่ หรือมีวิธีที่เหมาะสมในการทำ SPA โดยไม่ต้องมีการเข้าถึงสาธารณะ/การโฮสต์เว็บไซต์แบบคงที่หรือไม่?

Score:1
ธง gp
Tim

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

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

pbuzz007 avatar
si flag
ฉันเดาว่าสิ่งที่คนอื่น "ไม่ชอบ" เกี่ยวกับการโฮสต์สาธารณะของ S3 ก็คือผู้คนสามารถเข้าถึงได้ผ่าน URL เช่น `https://mything.s3.us-east-2.amazonaws.com/index.html` แต่นั่นเป็นเรื่องใหญ่หรือไม่? ฉันไม่รู้จริงๆ
Tim avatar
gp flag
Tim
ฉันไม่เห็นว่า URL ที่สองจะเป็นปัญหาได้อย่างไร คุณสามารถยกเว้นโรบ็อตได้โดยใช้ robots.txt
pbuzz007 avatar
si flag
ตกลง. ฉันใช้เวลาทั้งวันกับเรื่องนี้ และฉันรู้สึกแย่ที่การให้สิทธิ์การเข้าถึงแบบสาธารณะหมายความว่าใครก็ตามที่มีบัญชี AWS สามารถเขียนลงในบัคเก็ตได้?? ฉันคิดว่านี่เป็นเพราะฉันสร้างที่เก็บข้อมูลที่สองให้เป็นที่ "ปลอดภัย" ซึ่งมีผู้ใช้ IAM ของฉันเพียงคนเดียวเท่านั้นที่สามารถเขียนถึง แต่ฉันพบว่าวิธีเดียวที่จะใช้ AWS sdk คือเปิดการเข้าถึงบัคเก็ตแบบสาธารณะ! Ahhh .. ทุกคนสามารถเขียนถึงถังสาธารณะได้หรือไม่?
Tim avatar
gp flag
Tim
คุณควบคุมการเข้าถึงด้วยนโยบายบัคเก็ต https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteAccessPermissionsReqd.html
Score:0
ธง cn

ฉันจะเลือกตัวเลือกที่สอง บัคเก็ต S3 ยังคงเป็นส่วนตัวด้วยการเข้าถึงแบบอ่านอย่างเดียวที่มอบให้แก่ Cloudfront Origin Access Identity (OAI) และคุณมั่นใจได้ว่าคำขอได้รับการปรับให้เหมาะสมผ่าน cloudfront ซึ่งตรงข้ามกับจุดสิ้นสุดของเว็บไซต์ s3

เพื่อหลีกเลี่ยงการแก้ไข index.html คุณสามารถใช้ฟังก์ชัน lambda@edge หรือฟังก์ชัน cloudfront มีตัวอย่างหลังในเอกสาร AWS:

https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/example-function-add-index.html

โพสต์คำตอบ

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