मान लें कि मेरे पास 'टेस्ट एक्ज़ीक्यूटर' नामक एक लैम्ब्डा फ़ंक्शन है जो एक तर्क लेता है जिसमें एन 'टेस्ट' के लिए एआरएन होते हैं जिन्हें लैम्ब्डा फ़ंक्शंस के रूप में भी लागू किया जाता है।
कार्यप्रवाह:
- TestExecutor को विभिन्न 'टेस्ट' के एआरएन की सूची के साथ बुलाया जाता है
- TestExecutor प्रत्येक टेस्ट को समवर्ती रूप से कॉल करता है; प्रत्येक लैम्ब्डा से एक JSON वापस करने की उम्मीद है
- TestExecutor प्रत्येक टेस्ट के पूरा होने की प्रतीक्षा करता है। यह प्राप्त सभी JSON को समेकित करता है
- समेकित JSON को DynamoDB/S3 . में संग्रहीत किया जाता है
समस्या कथन - सर्वर रहित तरीके से इस प्रकार के वर्कफ़्लो को बनाने का सबसे अच्छा तरीका क्या है?
मैंने इसे प्रबंधित करने के लिए दो AWS सेवाओं पर विचार किया:
- एडब्ल्यूएस स्टेप फंक्शंस - माई स्टेप फंक्शन को प्रत्येक संभावित 'टेस्ट' लैम्ब्डा के लिए राज्यों की आवश्यकता होगी जिसे निष्पादित किया जा सकता है। मैं उपयोगकर्ता को अपने चरण समारोह में 'पंजीकरण' की आवश्यकता के बिना किसी भी लैम्ब्डा को आमंत्रित करने के लिए लचीलापन देना चाहता हूं।
- एडब्ल्यूएस एसडब्ल्यूएफ - बस थोड़ा अधिक लगता है। ऊपर दी गई समस्या से भी पीड़ित हैं।
तो अभी सबसे अच्छा मैं सोच सकता हूं कि इसे सरल तरीके से कर रहा हूं:
मेरे टेस्ट एक्ज़ीक्यूटर लैम्ब्डा में, मैं एन परीक्षणों के लिए एन थ्रेड बना सकता हूं प्रत्येक थ्रेड एक विशेष टेस्ट के लैम्ब्डा फ़ंक्शन को आमंत्रित करता है। प्रत्येक थ्रेड एक JSON वापस करने के लिए अपने टेस्ट की प्रतीक्षा करता है। जैसा कि सभी निष्पादन सफल होते हैं, सभी JSON समेकित होते हैं। समेकित JSON को DynamoDB में संग्रहीत किया जाता है।
मैं इस समाधान से खुश नहीं हूं - टेस्ट लैम्बडास की विफलताओं और पुन: प्रयासों को मैन्युअल रूप से प्रबंधित करना थोड़ा मुश्किल होगा के भीतर TestExecutor Lambda। सर्वर रहित कुछ करने की कोशिश करने में यह मेरा पहला मौका है, लेकिन यह गलत पैटर्न की तरह लगता है। मैं अपने वर्कफ़्लो का एक अच्छा टॉप-डाउन दृश्य प्राप्त करना चाहता हूं - ऐसा लगता है कि यह निगरानी करना थोड़ा गड़बड़ और बिखरा हुआ होगा क्योंकि TestExecutor और Test Lambdas के बीच कोई औपचारिक लिंक नहीं है
हो सकता है कि मैं प्रत्येक टेस्ट लैम्ब्डा के साथ एक एसक्यूएस कतार बना सकूं। TestExecutor को दिए गए प्रत्येक ARN के लिए, मैं एक संदेश को संबंधित कतार में धकेल सकता था। लेकिन अब क्या? मुझे प्रत्येक टेस्ट के लिए 'श्रोता' लैम्ब्डा बनाना होगा जो प्रत्येक कतार को प्रत्येक टी सेकेंड में मतदान करता है। इसके बाद यह वास्तविक टेस्ट लैम्ब्डा का आह्वान करेगा। यह अनावश्यक रूप से जटिल भी लगता है।
कुछ सलाह सुनना अच्छा लगेगा! चीयर्स।
2 जवाब
एडब्ल्यूएस एसडब्ल्यूएफ एक ही समस्या से ग्रस्त नहीं है क्योंकि इसे लैम्ब्डा फ़ंक्शन के पंजीकरण की आवश्यकता नहीं है। एसडब्ल्यूएफ की मुख्य सीमा यह है कि लैम्ब्डा फ़ंक्शन के रूप में निर्णायक प्रक्रिया को चलाना अभी भी संभव नहीं है। तो आपको इसे कहीं और चलाना होगा। यदि आपके पास पहले से ही कुछ होस्ट है जो AWS फ़्लो फ्रेमवर्क बहुत सीधा है।
आप लैम्ब्डा फंक्शन के भीतर से उक्त एआरएन का उपयोग करके स्टेप मशीन बनाने के लिए एडब्ल्यूएस एसडीके का लाभ उठा सकते हैं।
इसे बाद में किसी तरह साफ करने के लिए किसी तरह की आवश्यकता होगी, और/या डुप्लिकेट से बचें, या कंसोल जल्दी से गन्दा हो जाएगा।
संबंधित सवाल
नए सवाल
amazon-web-services
Amazon Web Services (AWS) एक सार्वजनिक-क्लाउड है: IaaS (एक सेवा के रूप में अवसंरचना) और अमेज़न द्वारा उपलब्ध कराए गए SaaS (एक सेवा के रूप में सॉफ़्टवेयर)। प्रोग्रामिंग और आर्किटेक्चर के बारे में प्रश्न विषय पर हैं। Https://serverfault.com पर सामान्य सर्वर सहायता प्राप्त की जा सकती है। AWS टैग का उपयोग शायद ही कभी किया जाता है और आमतौर पर अन्य टैग के साथ प्रश्न के विषय को अधिक स्पष्ट रूप से परिभाषित करने के लिए उपयोग किया जाएगा।