कनेक्शन के दृष्टिकोण से "कुछ" को आपके अनुरोधों का जवाब देने की आवश्यकता है (GET, POST, PUT, सब कुछ)। सबसे पहले आपके पास एक टीसीपी कनेक्शन है और "कुछ" को यह सुनिश्चित करने की आवश्यकता है कि यह परत 7 को समझ रहा है और ग्राहक द्वारा भेजे जा रहे बाइट्स से समझ बना रहा है। केवल इस बिंदु पर POST अनुरोधों या किसी अन्य URL की तुलना में एक URL से भिन्न GET अनुरोधों को संभालना संभव है। तो अंत में आपको एक ऐसी सेवा की आवश्यकता होती है जो HTTP को समझने और रुट करने में सक्षम हो। निम्नलिखित सेवाएँ ऐसा करने में सक्षम हैं: CloudFront ELB / ALB API गेटवे (सीमा बाद में आती है)
API गेटवे आंतरिक रूप से CloudFront का उपयोग करता है (आपको वास्तव में CloudFront स्तर पर कुछ भी कॉन्फ़िगर करने का मौका दिए बिना) - इसका मतलब है कि CloudFront और API Gateway को साइड-बाय-साइड चलाने का कोई तरीका नहीं है क्योंकि अंत में इसका मतलब यह होगा कि CloudFront के साथ CloudFront साथ साथ।
CloudFront आपको पैटर्न के आधार पर विभिन्न उत्पत्ति का चयन करने का मौका देता है - लेकिन आप केवल S3 या ELB / ALBs को मूल के रूप में चुन सकते हैं - लैम्बडा फ़ंक्शंस के अलावा (लैम्बडा @ एज फ़ंक्शनलिटी के अलावा)।
ALB / ELB केवल बैकेंड के रूप में EC2 उदाहरणों का उपयोग कर सकते हैं - यहाँ कोई लैम्ब्डा या S3 नहीं है।
केवल वे ही तरीके हैं जिनके बारे में मैं सोच सकता हूँ कि आप ये करना चाहते हैं:
- आप एपीआई गेटवे का उपयोग करते हैं और एक विशिष्ट "संपत्ति" -पैथ को एक लैम्ब्डा फ़ंक्शन में रूट करते हैं जो एस 3 के लिए रिवर्स प्रॉक्सी की तरह करता है (इसलिए लैम्ब्डा के माध्यम से स्थैतिक संपत्ति को पाइप करना) - यहां लैम्ब्डा के लिए लागतों से अवगत रहें!
- आप ऐसा ही कर सकते हैं लेकिन लैंबडा के माध्यम से परिसंपत्ति को पाइप करने के बजाय सिर्फ लैम्ब्डा के भीतर एक हस्ताक्षरित URL उत्पन्न करें जो कि सेवा के लिए सीधे S3 पर पुनर्निर्देशित करें (अधिक लागत कुशल हो सकता है)
- अपने शेष एप्लिकेशन की तुलना में अपनी संपत्ति के लिए विभिन्न उप-डोमेन का उपयोग करना - यह एक बहुत ही सामान्य पैटर्न है क्योंकि आप आसानी से DNS स्तर पर अलग हो सकते हैं और विभिन्न उपयोग के मामलों के लिए विभिन्न सेवाओं का उपयोग कर सकते हैं (गैर-स्थैतिक के लिए संपत्ति और एपीआई गेटवे के लिए CloudFront भागों)
तो मेरा कॉल अंतिम विकल्प होगा - लेकिन इसका मतलब है कि आपको क्लाइंट / ब्राउज़र को सभी स्थिर संपत्तियों (या सभी POST अनुरोधों के लिए) के लिए एक अलग उपडोमेन पर इंगित करना होगा।
ऐसा लगता है जैसे आप AngularJS या React जैसी तकनीकों पर एक नज़र रखना चाहते हैं ताकि ब्राउजर में सही मायने में एपीआई-संचालित एप्लिकेशन का निर्माण किया जा सके। इस दृष्टिकोण के साथ आप एक वास्तविक एपीआई चला रहे हैं जो एक एपीआई गेटवे के साथ सभी "गतिशील" अनुरोधों को संभाल रहा है और एस 3 से स्वयं को स्थिर संपत्ति के रूप में आवेदन वितरित कर रहा है। शायद उन लोगों को देखने से आपको अपना रास्ता खोजने में मदद मिल सकती है - भले ही आप उनका उपयोग न करें, इस तरह की चीजों का निर्माण करने का वास्तुशिल्प पैटर्न इस तरह से है जो आप imho के लिए पूछ रहे हैं।