จากจุดเชื่อมต่อของมุมมอง "บางอย่าง" จำเป็นต้องตอบคำขอของคุณ (GET, POST, PUT, ทุกอย่าง) ก่อนอื่นคุณต้องมีการเชื่อมต่อ TCP และ "บางสิ่ง" จำเป็นต้องตรวจสอบให้แน่ใจว่าเป็นการเข้าใจเลเยอร์ 7 และทำให้รู้สึกว่าไบต์ที่ไคลเอ็นต์กำลังส่ง เมื่อมาถึงจุดนี้มันเป็นไปได้ที่จะจัดการกับคำขอ GET แตกต่างจากคำขอ POST หรือหนึ่ง URL มากกว่า URL อื่น ดังนั้นในที่สุดคุณต้องมีบริการที่สามารถเข้าใจและกำหนดเส้นทาง HTTP ได้ บริการต่อไปนี้สามารถทำสิ่งนี้ได้: เกตเวย์ CloudFront ELB / ALB API (ข้อ จำกัด มาภายหลัง)
API Gateway ใช้ CloudFront ภายใน (โดยไม่ให้โอกาสคุณปรับแต่งอะไรในระดับ CloudFront) - นั่นหมายความว่าไม่มีทางที่จะเรียกใช้ CloudFront และ API Gateway เคียงข้างกันในท้ายที่สุดสิ่งนี้หมายความว่าคุณรัน CloudFront ด้วย CloudFront เคียงบ่าเคียงไหล่.
CloudFront เปิดโอกาสให้คุณเลือกต้นกำเนิดที่แตกต่างกันตามรูปแบบ - แต่คุณสามารถเลือก S3 หรือ ELB / ALB เป็นจุดเริ่มต้นไม่ใช่ฟังก์ชั่นของแลมบ์ดา (นอกเหนือจากฟังก์ชั่นแลมบ์ดาเอดจ์)
ALB / ELB สามารถใช้อินสแตนซ์ EC2 เป็นแบ็กเอนด์เท่านั้น - ไม่มีแลมบ์ดาหรือ S3 ที่นี่
วิธีเดียวที่ฉันสามารถนึกได้ว่าสิ่งใดที่คุณอาจต้องการทำคือ:
- คุณใช้ API เกตเวย์และกำหนดเส้นทาง "สินทรัพย์" เฉพาะ - ไปยังฟังก์ชั่นแลมบ์ดาซึ่งทำหน้าที่เป็นพร็อกซีย้อนกลับสำหรับ S3 (ดังนั้นการวางสินทรัพย์ถาวรผ่านแลมบ์ดา) - ระวังค่าใช้จ่ายสำหรับแลมบ์ดาที่นี่!
- คุณสามารถทำสิ่งเดียวกันได้ แต่แทนที่จะส่งผ่านสินทรัพย์ผ่านแลมบ์ดาเพียงแค่สร้าง URL ที่ได้รับการรับรองภายในแลมบ์ดาการเปลี่ยนเส้นทางไปยัง S3 เพื่อให้บริการโดยตรง (อาจมีประสิทธิภาพมากกว่า)
- การใช้โดเมนย่อยที่แตกต่างกันสำหรับสินทรัพย์ของคุณนอกเหนือจากส่วนที่เหลือของแอปพลิเคชันของคุณ - นี่เป็นรูปแบบทั่วไปมากเนื่องจากคุณสามารถแยกระดับ DNS และใช้บริการต่าง ๆ สำหรับกรณีการใช้งานที่แตกต่างกัน (CloudFront สำหรับสินทรัพย์และ API เกตเวย์สำหรับแบบไม่คงที่ ชิ้นส่วน)
ดังนั้นการโทรของฉันจะเป็นตัวเลือกสุดท้าย - แต่นั่นหมายความว่าคุณต้องชี้ไคลเอนต์ / เบราว์เซอร์ไปยังโดเมนย่อยแยกต่างหากสำหรับสินทรัพย์คงที่ทั้งหมด (หรือสำหรับคำขอ POST ทั้งหมด)
ดูเหมือนว่าคุณต้องการดูเทคโนโลยีเช่น AngularJS หรือ React เพื่อสร้างแอปพลิเคชันที่ขับเคลื่อนด้วย API อย่างแท้จริงในเบราว์เซอร์ ด้วยวิธีนี้คุณจะใช้ API จริงซึ่งจัดการคำขอ "ไดนามิก" ทั้งหมดด้วยเกตเวย์ API และส่งมอบแอปพลิเคชันจาก S3 เป็นสินทรัพย์แบบคงที่ บางทีการดูสิ่งเหล่านั้นอาจช่วยคุณค้นหาเส้นทางของคุณ - แม้ว่าคุณจะไม่ได้ใช้รูปแบบสถาปัตยกรรมในการสร้างสิ่งต่าง ๆ เช่นนี้คือสิ่งที่คุณกำลังขออิโม