2016-11-06 10 views
5

क्या किसी और ने निम्नलिखित समस्या हल की है?
मैं एसएनएस विषयS3 से घटनाओं से भरा है और वहाँ है लैम्ब्डा समारोह जो इस विषय पर सदस्यता लिया है और जब घटनाओं की हजार इस विषय के लिए रखा जाता है, लैम्ब्डा समारोह क्योंकि संगामिति की सीमा से अधिक की रोक दिए है ।
मैं समवर्ती निष्पादन के लिए सीमा वृद्धि का अनुरोध नहीं करना चाहता हूं लेकिन मैं इस विषय से समवर्ती उपभोग को कम कर दूंगा, लेकिन मुझे यह नहीं मिला कि यह कैसे किया जाए। धन्यवाद। एसएनएस के बारे में विकल्पों में सेकिसी विषय से उपभोग करने वाली दर को सीमित कैसे करें?

उत्तर

5

एक जोड़े:

1) एसएनएस अधिकतम प्राप्त करें दर

SNS Maximum Receive Rate सेट करें। यह किसी ग्राहक को भेजे गए एसएनएस संदेशों को थ्रॉटल करेगा, लेकिन यदि आपके पास इतने सारे संदेश हैं कि उन्हें संसाधित किए जाने से पहले उन्हें त्याग दिया जाएगा तो यह एक अच्छा विकल्प नहीं हो सकता है। प्रलेखन से:

आप प्रति सेकंड अमेज़न एसएनएस अधिकतम स्थापना करके एक सदस्यता ली समाप्ति बिंदु को भेजता है संदेशों की अधिकतम संख्या निर्धारित कर सकते हैं दर सेटिंग प्राप्त करते हैं। अमेज़ॅन एसएनएस में ऐसे संदेश हैं जो को एक घंटे तक डिलीवरी का इंतजार कर रहे हैं। एक घंटे से अधिक समय तक आयोजित संदेशों को त्याग दिया जाता है।

आप एक बार में केवल घटनाओं के हजारों मिल रहे हैं, अधिकतम सेटिंग लैम्ब्डा के default concurrent execution limit '100' के लिए दर प्राप्त एक कोशिश के लायक हो सकता है।

@kndrk नोट्स के रूप में, यह थ्रॉटलिंग वर्तमान में केवल HTTP/HTTPS ग्राहकों के लिए एसएनएस विषय पर उपलब्ध है। इसके आसपास काम करने के लिए, आप expose your lambda function via AWS API Gateway कर सकते हैं और सीधे लैम्ब्डा फ़ंक्शन की बजाय एसएनएस विषय पर उस एंडपॉइंट की सदस्यता ले सकते हैं। SQS

Subscribe an SQS queue to the SNS topic और इस प्रक्रिया संदेशों से कतार से, बजाय सीधे एसएनएस विषय से

2) प्रक्रिया। एसक्यूएस ReceiveMessage का एक एकल आमंत्रण एक समय में केवल 10 संदेशों को संभाल सकता है, ताकि आपके लिए थ्रॉटल करना आसान हो।


यह भी ध्यान देने योग्य है कि आप S3 Events directly to AWS Lambda प्रकाशित कर सकते हैं।

+0

त्वरित उत्तर के लिए धन्यवाद। मैंने समाधान की कोशिश की जब लैम्ब्डा एस 3 द्वारा ट्रिगर कर रहा था लेकिन एक ही समस्या आई है, इसलिए मैंने S3-> sns-> lambda संयोजन का प्रयास करने का निर्णय लिया। मैं आपका पहला विकल्प आजमाने जा रहा हूं, यह मेरे लिए उपयुक्त हो सकता है। ** पीएस ** ** मैं तुरंत एस 3 से घटनाओं को संसाधित करना चाहता हूं क्योंकि ज्यादातर मामलों में लोड इतना अधिक नहीं होता है, लेकिन अगर मैं सही ढंग से समझता हूं, तो लैम्ब्डा को एसक्यूएस की घटनाओं से ट्रिगर नहीं किया जा सकता है। एसक्यूएस – nikolayandr

+0

से उपभोग करने के लिए लैम्ब्डा फ़ंक्शन को निष्पादित करने का एकमात्र तरीका यह सही है - एसक्यूएस के लिए आप अनिवार्य रूप से एक विशिष्ट ट्रिगर में प्लग करने के बजाय लैंबडा से एसक्यूएस रेसीव मैसेज को एक शेड्यूल पर मतदान करेंगे। यह आपकी टिप्पणी से लगता है कि एसएनएस अधिकतम प्राप्त दर आपके उपयोग के मामले के लिए एक अच्छा फिट होगा। उम्मीद करते है कि यह आपके लिए काम करें! –

+1

दुर्भाग्य से यह केवल HTTP (ओं) एंडपॉइंट्स पर लागू होता है। लैम्ब्डा के ग्राहक बिल्कुल थके हुए नहीं हैं। – knrdk

संबंधित मुद्दे