Last chance! 50% off DataCamp Premium
Sale ends in
अपनी एप्लिकेशंस में रियल-टाइम नोटिफिकेशंस प्रबंधित करना एक बड़ी चुनौती हो सकता है — कम से कम तब तक, जब तक आपके पास सही मैसेजिंग सेवा न हो।
Amazon Simple Notification Service (SNS) एक पूर्ण-प्रबंधित मैसेजिंग समाधान है जो माइक्रोसर्विसेज, डिस्ट्रीब्यूटेड सिस्टम्स और सर्वरलेस एप्लिकेशंस के डीकपलिंग और स्केलिंग में मदद करता है। SNS आपको HTTP/S, ईमेल, SMS, और मोबाइल पुश नोटिफिकेशंस जैसे कई ट्रांसपोर्ट प्रोटोकॉल्स के माध्यम से बड़ी संख्या में सब्सक्राइबर्स को संदेश भेजने की अनुमति देता है। AWS SNS संदेश डिलीवरी की सभी जटिलताएँ संभालता है, जिनमें विश्वसनीय डिलीवरी, रिट्राई, और बैकऑफ फंक्शनैलिटी शामिल हैं, ताकि आप अपनी कोर एप्लिकेशन विशेषताओं के निर्माण पर ध्यान केंद्रित कर सकें।
AWS SNS एक पब्लिश-सब्सक्राइब मॉडल का पालन करता है, जो स्केल करना और समझना दोनों ही आसान है। एक ही प्रकाशित संदेश को एक साथ कई एंडपॉइंट्स पर वितरित किया जा सकता है, जो SNS को इवेंट-ड्रिवन आर्किटेक्चर्स के लिए आदर्श बनाता है।
इस ट्यूटोरियल में, मैं आपको विभिन्न चैनलों पर नोटिफिकेशंस भेजने के लिए AWS SNS सेटअप और उपयोग करने के चरण दिखाऊँगा।
Amazon Simple Notification Service (SNS) AWS की मैनेज्ड pub/sub मैसेजिंग सेवा है, जो माइक्रोसर्विसेज, डिस्ट्रीब्यूटेड सिस्टम्स और सर्वरलेस एप्लिकेशंस को डीकपल करने की सुविधा देती है।
SNS एक सरल पब्लिश-सब्सक्राइब मॉडल पर काम करता है, जहाँ पब्लिशर्स संदेशों को टॉपिक्स पर भेजते हैं, और सब्सक्राइबर्स वे संदेश प्राप्त करते हैं। SNS टॉपिक को आप एक संचार चैनल की तरह समझें — आप इस चैनल पर संदेश प्रकाशित करते हैं, और जो भी इससे सब्सक्राइब्ड है, उसे तुरंत सूचित कर दिया जाता है। इस सिस्टम की खूबी यह है कि पब्लिशर्स को यह जानने की ज़रूरत नहीं कि उनके संदेश कौन प्राप्त कर रहा है, और सब्सक्राइबर्स को यह जानने की ज़रूरत नहीं कि संदेश कौन भेज रहा है।
आप सोच रहे होंगे कि यह अन्य AWS मैसेजिंग सेवाओं जैसे Simple Queue Service (SQS) से कैसे अलग है। सरल शब्दों में, SQS एक क्यू-आधारित मॉडल का उपयोग करता है, जो मुख्य रूप से असिंक्रोनस रूप से टास्क प्रोसेसिंग के लिए डिज़ाइन किया गया है, जबकि SNS का फोकस एक ही समय में कई प्राप्तकर्ताओं को संदेश प्रसारित करने पर है। इसलिए, SNS उन परिदृश्यों के लिए उपयुक्त है जहाँ आपको अभी-अभी घटित किसी इवेंट के बारे में कई सिस्टम्स को सूचित करना हो। आप अंतर के बारे में अधिक जान सकते हैं SQS बनाम SNS ब्लॉग पोस्ट में।
SNS कई डिलीवरी प्रोटोकॉल्स को सपोर्ट करता है, जो यह लचीलापन देता है कि आपके सब्सक्राइबर्स नोटिफिकेशंस कैसे प्राप्त करें।
SNS ऐसी विशेषताओं से भरा है जो इसे आपके लिए एकमात्र नोटिफिकेशन सेवा बना देती हैं। मैं कुछ सूचीबद्ध कर रहा हूँ:
लेकिन SNS की सबसे बेहतरीन बात है इसकी स्केलेबिलिटी। SNS आपकी एप्लिकेशन की आवश्यकताओं के अनुसार स्वतः स्केल करता है। चाहे आप प्रतिदिन दस नोटिफिकेशन भेज रहे हों या एक करोड़, सेवा बिना किसी मैनुअल हस्तक्षेप के उसी के अनुसार समायोजित हो जाती है।
अगले भाग में, मैं आपको SNS सेटअप करना दिखाऊँगा।
SNS के साथ अपना पहला नोटिफिकेशन भेजने से पहले, आपको कुछ सेटअप चरणों का पालन करना होगा।
यदि आपके पास पहले से AWS खाता नहीं है, तो SNS उपयोग करना शुरू करने से पहले आपको एक खाता बनाना होगा।
यहाँ जाएँ AWS होमपेज और ऊपर दाएँ कोने में "Create an AWS Account" बटन पर क्लिक करें। आपको अपना ईमेल पता देना होगा, पासवर्ड बनाना होगा, और कुछ बुनियादी खाता जानकारी दर्ज करनी होगी। AWS आपके क्रेडिट कार्ड विवरण भी माँगेगा — चिंता न करें, SNS का फ्री टियर काफ़ी उदार है, और जब तक आप उसकी सीमा पार नहीं करते, आपसे शुल्क नहीं लिया जाएगा।
एक बार जब आपका खाता सेटअप हो जाए, तो आप आगे बढ़ने के लिए तैयार हैं। हालाँकि, मैं दृढ़ता से सलाह दूँगा कि आप अपने रूट खाते के बजाय एक समर्पित IAM यूज़र बनाएँ। यह आज के लेख के दायरे से बाहर है, लेकिन विस्तृत दिशा-निर्देशों के लिए जाएँ आधिकारिक निर्देश पर और वहाँ देखें।
अब जब आपके पास AWS खाता है, तो SNS सेवा तक पहुँचने का समय है।
AWS मैनेजमेंट कंसोल में अपने क्रेडेंशियल्स के साथ लॉग इन करें और SNS ढूँढ़ें। आप यह तीन तरीकों से कर सकते हैं:
किसी भी तरीके से जाएँ, आपको यह स्क्रीन दिखनी चाहिए:

छवि 1 - AWS SNS सेवा पेज
SNS डैशबोर्ड में, आपको बाईं ओर "Topics," "Subscriptions," और "Mobile" जैसे विकल्पों वाला मेनू दिखेगा। डैशबोर्ड आपके SNS संसाधनों और हाल की गतिविधि का अवलोकन देता है।
नए खाते के लिए यह काफ़ी खाली होगा — यह सामान्य है। अब, चलिए अपना पहला SNS टॉपिक बनाते हैं।
SNS टॉपिक मूलतः एक संचार चैनल है, जिस पर पब्लिशर्स संदेश भेजते हैं और सब्सक्राइबर्स सुनते हैं।
इसे रेडियो स्टेशन की तरह समझें — स्टेशन एक खास फ़्रीक्वेंसी (टॉपिक) पर प्रसारण करता है, और जो भी उस फ़्रीक्वेंसी पर ट्यून रहता है, वह प्रसारण प्राप्त करता है। SNS में, आपकी एप्लिकेशन टॉपिक पर संदेश प्रकाशित करती है, और उस टॉपिक से सब्सक्राइब्ड सभी एंडपॉइंट्स संदेश प्राप्त करते हैं।
अपना पहला SNS टॉपिक ऐसे बनाएँ:
यदि आप टेक्स्ट से अधिक चित्र पसंद करते हैं, तो आपकी स्क्रीन कुछ ऐसी दिखनी चाहिए:

छवि 2 - SNS टॉपिक निर्माण
जब आप मानों से संतुष्ट हों, नीचे स्क्रॉल करें और "Create topic" बटन देखें:

छवि 3 - SNS टॉपिक निर्माण (2)
बस इतना ही! आपका SNS टॉपिक अब उपयोग के लिए तैयार है। आपको टॉपिक ARN (Amazon Resource Name) जैसे विवरण दिखाई देंगे, जो आपके टॉपिक की विशिष्ट पहचान करता है:

छवि 4 - बनाए गए टॉपिक का विवरण
आपका नया टॉपिक सब्सक्रिप्शंस के लिए तैयार है, लेकिन अभी कोई सब्सक्राइबर नहीं है, यानी आपके द्वारा प्रकाशित संदेश कहीं नहीं जाएँगे। चिंता न करें, अगले सेक्शन में आप सब्सक्राइबर्स जोड़कर इसे ठीक करेंगे।
जैसा कि मैंने पहले कहा, आपका SNS टॉपिक एक रेडियो स्टेशन की तरह है। फिलहाल इसके कोई श्रोता नहीं हैं, लेकिन जैसे ही आप संदेश प्राप्त करने के लिए सब्सक्राइबर्स जोड़ेंगे, यह बदल जाएगा।
सब्सक्राइबर कोई भी एंडपॉइंट होता है जो आपके SNS टॉपिक से किसी संदेश के प्रकाशित होने पर नोटिफिकेशंस प्राप्त करता है।
न्यूज़लेटर के उदाहरण पर विचार करें। हर बार जब आप नया अंक (संदेश) प्रकाशित करते हैं, तो वह आपकी मेलिंग सूची में सभी तक पहुँचता है। SNS इस प्रक्रिया को स्वचालित और स्केलेबल बना देता है और आपके लिए डिलीवरी लॉजिस्टिक्स संभालता है।
AWS कई प्रकार के सब्सक्राइबर प्रकारों को सपोर्ट करता है, जो यह लचीलापन देता है कि आपके संदेश कैसे प्रोसेस किए जाएँ। मुख्य प्रकार नीचे दिए गए हैं:
हर सब्सक्राइबर प्रकार के अपने फायदे और उपयोग के मामले हैं। उदाहरण के लिए, ईमेल और SMS मनुष्यों के लिए बेहतर हैं, जबकि SQS क्यूज़ और Lambda फ़ंक्शंस सिस्टम-टू-सिस्टम संचार के लिए बेहतर हैं।
अब जब आप समझ गए कि सब्सक्राइबर्स क्या हैं, तो अपने टॉपिक में एक जोड़ते हैं। इस ट्यूटोरियल के लिए, मैं ईमेल का उपयोग करूँगा क्योंकि सेटअप सबसे आसान है।
अपने SNS टॉपिक में ईमेल सब्सक्राइबर जोड़ने का तरीका यह है:
आपकी स्क्रीन कुछ ऐसी दिखनी चाहिए:

छवि 5 - ईमेल सब्सक्रिप्शन बनाना
"Create subscription" पर क्लिक करने के बाद, AWS आपकी टॉपिक में सब्सक्रिप्शन जोड़ देगा, लेकिन यह "pending confirmation" स्थिति में होगा:

छवि 6 - पेंडिंग कंफर्मेशन स्थिति
यह एक महत्वपूर्ण सुरक्षा सुविधा है, क्योंकि AWS यह सुनिश्चित करना चाहता है कि ईमेल पते का स्वामी वाकई ये नोटिफिकेशंस प्राप्त करना चाहता है।
सब्सक्राइबर जोड़ने के बाद, उसे यह पुष्टि करनी होती है कि वे आपके SNS टॉपिक से नोटिफिकेशंस प्राप्त करना चाहते हैं।
ईमेल सब्सक्रिप्शंस के लिए, AWS आपके द्वारा दिए गए पते पर स्वचालित रूप से एक कंफर्मेशन ईमेल भेजता है। ईमेल में एक लिंक होता है, जिस पर क्लिक करके प्राप्तकर्ता सब्सक्रिप्शन सक्रिय करता है। जब तक ऐसा नहीं होता, टॉपिक पर प्रकाशित संदेश इस एंडपॉइंट तक वितरित नहीं होंगे।
एक सामान्य कंफर्मेशन ईमेल कुछ ऐसा दिखता है:

छवि 7 - SNS कंफर्मेशन ईमेल
प्राप्तकर्ता को बस ईमेल में दिए गए "Confirm subscription" लिंक पर क्लिक करना होता है। उन्हें एक पेज पर ले जाया जाएगा जो पुष्टि करेगा कि अब उनका सब्सक्रिप्शन सक्रिय है:

छवि 8 - सब्सक्रिप्शन कंफर्मेशन संदेश
SMS सब्सक्राइबर्स के लिए प्रक्रिया समान है — AWS एक टेक्स्ट संदेश भेजता है जिसमें कंफर्मेशन लिंक होता है, जिसे प्राप्तकर्ता को फॉलो करना होता है। HTTP/HTTPS एंडपॉइंट्स को AWS से आए कंफर्मेशन अनुरोध का उत्तर देना होता है, जबकि Lambda फ़ंक्शंस और SQS क्यूज़ जैसे AWS संसाधनों को ऑटोमैटिक कंफर्मेशन के लिए कॉन्फ़िगर किया जा सकता है।
आप SNS कंसोल के बाएँ साइडबार में "Subscriptions" सेक्शन पर क्लिक करके अपने सब्सक्रिप्शंस की स्थिति देख सकते हैं। कंफर्म्ड सब्सक्रिप्शंस की स्थिति "Confirmed" दिखेगी, जबकि पुष्टि की प्रतीक्षा कर रहे सब्सक्रिप्शंस में "Pending confirmation" दिखाई देगा।

छवि 9 - सब्सक्रिप्शन स्थिति
एक बार सब्सक्रिप्शन की पुष्टि हो जाने पर, आप संदेश भेजना शुरू करने के लिए तैयार हैं! टॉपिक पर प्रकाशित कोई भी संदेश सभी कंफर्म्ड सब्सक्राइबर्स तक उनके निर्दिष्ट प्रोटोकॉल के माध्यम से पहुँचाया जाएगा।
SNS सब्सक्रिप्शंस सेट करने के लिए बस इतना ही। अगले सेक्शन में, आप सीखेंगे कि अपने टॉपिक पर संदेश कैसे प्रकाशित करें और यह जाँचें कि आपके सब्सक्राइबर्स उन्हें सही ढंग से प्राप्त कर रहे हैं या नहीं।
अब जब आपने SNS टॉपिक सेट कर लिया है और सब्सक्राइबर्स जोड़ दिए हैं, तो अपना पहला नोटिफिकेशन भेजने का समय है।
शुरू करने का एक अच्छा तरीका AWS कंसोल के माध्यम से संदेश प्रकाशित करना है।
अपना पहला संदेश भेजने के लिए, अपने टॉपिक के विवरण पेज पर जाएँ और ऊपर दाएँ "Publish message" बटन पर क्लिक करें (देखें छवि 4)। इससे मैसेज पब्लिशिंग फॉर्म खुलेगा जहाँ आप अपना नोटिफिकेशन बना सकते हैं। आपको संदेश के विषय और बॉडी के लिए फ़ील्ड्स दिखेंगे। विषय वैकल्पिक है, लेकिन ईमेल नोटिफिकेशंस के लिए उपयोगी है क्योंकि वह ईमेल का सब्जेक्ट लाइन बन जाता है।
एक सरल टेस्ट संदेश के लिए, आप कुछ ऐसा दर्ज कर सकते हैं:

छवि 10 - पहले संदेश की सामग्री
जब आप अपने संदेश से संतुष्ट हों, तो नीचे स्क्रॉल करें और फॉर्म के नीचे "Publish message" बटन पर क्लिक करें:

छवि 11 - कंसोल के माध्यम से संदेश प्रकाशित करना
क्लिक करते ही, SNS आपका संदेश सभी कंफर्म्ड सब्सक्राइबर्स तक तुरंत वितरित कर देता है। यदि आपने ईमेल सब्सक्रिप्शन सेट किया है, तो कुछ सेकंड में आपके इनबॉक्स में टेस्ट संदेश दिखाई देना चाहिए:

छवि 12 - ईमेल में संदेश प्राप्त हुआ
आसान था, है ना? अब देखते हैं इसे और कैसे कस्टमाइज़ किया जा सकता है।
SNS आपको अलग-अलग प्रकार के सब्सक्राइबर्स के लिए संदेशों का स्वरूप कस्टमाइज़ करने देता है।
संदेश प्रकाशित करते समय, आपको "Message structure" विकल्प दिखेगा। डिफ़ॉल्ट रूप से, यह "Identical payload for all delivery protocols" पर सेट होता है, जिसका मतलब है कि सभी सब्सक्राइबर्स को एक जैसा संदेश मिलता है। हालाँकि, आप "Custom payload for each delivery protocol" भी चुन सकते हैं, जो आपको हर सब्सक्राइबर प्रकार के लिए संदेश का फ़ॉर्मेट अनुकूलित करने देता है।
ईमेल नोटिफिकेशंस के लिए, आपके पास दो फ़ॉर्मेट विकल्प हैं:

छवि 13 - पेलोड कस्टमाइज़ेशन
SMS नोटिफिकेशंस के लिए ध्यान रखें कि 160-अक्षरों की सीमा होती है। SNS लंबे संदेश भी डिलीवर करेगा, लेकिन वे कई संदेशों के रूप में माने जाएँगे। आप SMS मैसेज टाइप को "Promotional" या "Transactional" में भी सेट कर सकते हैं, जो डिलीवरी ऑप्टिमाइज़ेशन को प्रभावित करता है:

छवि 14 - SMS विकल्प
अब आप AWS कंसोल के माध्यम से ईमेल नोटिफिकेशंस भेजना और कस्टमाइज़ करना जानते हैं। अगला, आप CLI और Python के माध्यम से भी यही करना सीखेंगे।
कंसोल मैनुअल परीक्षण के लिए बढ़िया है, लेकिन वास्तविक दुनिया में आप प्रोग्रामेटिक रूप से संदेश प्रकाशित करना चाहेंगे।
AWS कमांड लाइन इंटरफ़ेस (CLI) आपको टर्मिनल या ऑटोमेशन स्क्रिप्ट्स से SNS संदेश भेजना आसान बनाता है।
मान लेते हैं कि आपने AWS CLI इंस्टॉल और कॉन्फ़िगर कर रखा है, तो CLI के माध्यम से संदेश प्रकाशित करने के लिए यह कमांड चलाएँ:
aws sns publish --topic-arn "sns-arn" --subject "CLI Notification" --message "Hello from the AWS CLI!"

छवि 15 - AWS CLI के माध्यम से संदेश प्रकाशित करना
पलक झपकते ही, आपको अपने इनबॉक्स में एक समान संदेश दिखाई देगा:

छवि 16 - AWS CLI के माध्यम से संदेश प्रकाशित करना (2)
और उन्नत एप्लिकेशंस के लिए, AWS SDKs कई प्रोग्रामिंग भाषाओं में SNS तक प्रोग्रामेटिक एक्सेस प्रदान करते हैं।
यहाँ Python में boto3 लाइब्रेरी का उपयोग करके संदेश प्रकाशित करने का एक सरल उदाहरण है:
import boto3
# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")
# Topic ARN (Amazon Resource Name)
topic_arn = "sns-arn"
# Publish a simple message
response = sns_client.publish(
TopicArn=topic_arn, Message="Hello from Python!", Subject="Python Notification"
)
# Check if the message was sent successfully
if "MessageId" in response:
print(f"Message published successfully! Message ID: {response['MessageId']}")

छवि 17 - Python SDK के माध्यम से संदेश प्रकाशित करना
एक बार फिर, संदेश तुरंत मेरे इनबॉक्स में पहुँच गया:

छवि 18 - Python SDK के माध्यम से संदेश प्रकाशित करना (2)
SNS के साथ संदेश प्रकाशित करने के लिए बस इतना ही! अब आपके पास नोटिफिकेशंस भेजने के कई तरीके हैं — सरल कंसोल इंटरफ़ेस से लेकर AWS CLI या SDK के साथ प्रोग्रामेटिक पब्लिशिंग तक।
> Python में AWS Boto में नए हैं? हमारा कोर्स जॉइन करें और थोड़े समय में दक्ष बनें।
अगले सेक्शन में, हम SNS की कुछ उन्नत क्षमताओं का अन्वेषण करेंगे जो आपके नोटिफिकेशंस को अगले स्तर पर ले जाएँगी।
अब तक, आपने SNS की बुनियादी बातें सीख ली हैं। इस सेक्शन में, आप कुछ उन्नत फीचर्स देखेंगे जो SNS को वास्तव में शक्तिशाली बनाते हैं।
सभी सब्सक्राइबर्स को एक जैसा नोटिफिकेशन भेजना अक्सर ऐसे एंडपॉइंट्स तक भी संदेश पहुँचाता है जिन्हें उसकी परवाह नहीं।
मैसेज फ़िल्टरिंग सब्सक्राइबर्स को मैसेज एट्रिब्यूट्स के आधार पर यह चुनने देती है कि वे कौन-से संदेश प्राप्त करें। इसे ईमेल फ़िल्टर्स सेट करने जैसा समझें — आप ऐसे नियम बनाते हैं जो तय करते हैं कि कौन-से संदेश आगे जाएँ। SNS में, इन नियमों को फ़िल्टर पॉलिसीज़ कहा जाता है।
शुरू करने के लिए, आप अपनी सब्सक्रिप्शंस पर फ़िल्टर पॉलिसीज़ सेट कर सकते हैं ताकि उन्हें केवल प्रासंगिक संदेश ही मिलें:

छवि 19 - नोटिफिकेशन फ़िल्टर पॉलिसीज़
इस उदाहरण में, सब्सक्राइबर केवल उन्हीं नोटिफिकेशंस को प्राप्त करेगा जिनमें order_value एट्रिब्यूट का संख्यात्मक मान 1500 या उससे अधिक हो।
अब, ऐसा नोटिफिकेशन भेजने के लिए आप निम्न Python कोड का उपयोग कर सकते हैं:
import boto3
# Initialize the SNS client
sns_client = boto3.client("sns", region_name="eu-central-1")
# Topic ARN (Amazon Resource Name)
topic_arn = "arn:aws:sns:eu-central-1:105036517833:TestTopic"
response = sns_client.publish(
TopicArn=topic_arn,
Message="A new high-value order has been placed",
Subject="New Order Notification",
MessageAttributes={
"order_value": {"DataType": "Number", "StringValue": "2000"},
"region": {"DataType": "String", "StringValue": "EU"},
"category": {"DataType": "String", "StringValue": "Electronics"},
},
)
print(response)
Python स्क्रिप्ट चलाने के बाद आपको कुछ ऐसा दिखाई देगा:

छवि 20 - Python के माध्यम से नोटिफिकेशन भेजना
केवल तभी जब order_value का मान 1500 या उससे अधिक होगा, आपको नोटिफिकेशन प्राप्त होगा:

छवि 21 - नोटिफिकेशन सामग्री
संक्षेप में, फ़िल्टर पॉलिसीज़ आपको पब्लिशिंग कोड बदले बिना टार्गेटेड नोटिफिकेशंस भेजने देती हैं। सबसे अच्छी बात यह है कि फ़िल्टरिंग आपकी एप्लिकेशन में नहीं, बल्कि AWS की तरफ होती है, जिससे दक्षता बढ़ती है और अनावश्यक ट्रैफ़िक कम होता है।
सबसे विश्वसनीय सिस्टम्स में भी कभी-कभी संदेश डिलीवरी विफल हो सकती है।
डेड लेटर क्यू (DLQ) एक विशेष Amazon SQS क्यू है, जहाँ SNS उन संदेशों को भेज सकता है जो अपने सब्सक्राइबर्स तक पहुँचाए नहीं जा सके। यह आमतौर पर तब होता है जब सब्सक्राइबर अनुपलब्ध होता है या त्रुटि लौटाता है। इन विफल संदेशों को हमेशा के लिए खोने के बजाय, SNS उन्हें DLQ में रीडायरेक्ट कर देता है, जहाँ आप बाद में उनका विश्लेषण कर सकते हैं या डिलीवरी फिर से आज़मा सकते हैं।
DLQ सेटअप करने में दो चरण शामिल हैं। पहले, एक SQS क्यू बनाएँ जो आपके DLQ के रूप में काम करेगी:

छवि 22 - एक SQS क्यू बनाना
फिर, अपने SNS सब्सक्रिप्शन को इस क्यू का उपयोग न डिलीवर हो सकने वाले संदेशों के लिए कॉन्फ़िगर करें:

छवि 23 - SQS क्यू में रेड्राइव पॉलिसी जोड़ना
इस कॉन्फ़िगरेशन के लिए सही परमिशंस की आवश्यकता होती है, क्योंकि SNS को SQS क्यू में संदेश भेजने में सक्षम होना चाहिए। AWS कंसोल में, आप इसे एक सरल चेकबॉक्स के माध्यम से सेट कर सकते हैं, लेकिन यदि आप CloudFormation या अन्य इंफ्रास्ट्रक्चर-एज़-कोड टूल्स का उपयोग कर रहे हैं, तो आपको उपयुक्त IAM परमिशंस जोड़ने होंगे।
DLQ के साथ, आप डिलीवरी विफलताओं की निगरानी कर सकते हैं और आवश्यकता पड़ने पर कार्रवाई कर सकते हैं। उदाहरण के लिए, आप एक अलार्म सेट कर सकते हैं जो तब ट्रिगर होता है जब आपके DLQ में संदेश आने लगते हैं, जिससे आपके सब्सक्राइबर्स में संभावित समस्याओं के बारे में सचेत किया जा सके — लेकिन यह इस सेक्शन के दायरे से बाहर है।
Lambda फ़ंक्शंस SNS संदेशों को प्रोसेस करने के लिए अनगिनत संभावनाएँ खोलते हैं।
जब आप किसी SNS टॉपिक को Lambda फ़ंक्शन से सब्सक्राइब करते हैं, तो हर बार संदेश प्रकाशित होने पर फ़ंक्शन अपने-आप ट्रिगर हो जाता है। Lambda का सर्वरलेस दृष्टिकोण यह सुनिश्चित करता है कि संदेश प्रोसेसिंग के लिए आपको किसी इन्फ्रास्ट्रक्चर को मैनेज नहीं करना पड़े — यह संदेशों की मात्रा के अनुसार स्वतः स्केल हो जाता है।
शुरू करने के लिए, पहले एक Lambda फ़ंक्शन बनाएँ:

छवि 24 - Lambda फ़ंक्शन बनाना
फिर, इसमें इस तरह का कोड भरें:
def lambda_handler(event, context):
# SNS messages come in the 'Records' array
for record in event["Records"]:
# Extract the message
message = record["Sns"]["Message"]
subject = record["Sns"]["Subject"]
timestamp = record["Sns"]["Timestamp"]
# Process the message
print(f"Received message: {message}")
print(f"Subject: {subject}")
print(f"Timestamp: {timestamp}")
# Your business logic here
# For example, store the message in a database
# or trigger another AWS service
print("ALL DONE!")
# Return success
return {"statusCode": 200, "body": "Message processed successfully"}

छवि 25 - Lambda फ़ंक्शन कोड
जब आपका कोड तैयार हो जाए, तो Lambda फ़ंक्शन को SNS से जोड़ने के लिए "Add trigger" बटन पर क्लिक करें:

छवि 26 - SNS को Lambda से जोड़ना
अब फ़ंक्शन क्यू से जुड़ा हुआ है, यानी आप एक टेस्ट नोटिफिकेशन भेज सकते हैं:

छवि 27 - टेस्ट नोटिफिकेशन
Lambda फ़ंक्शंस आपको लॉग्स मॉनिटर करने देते हैं, यानी आप हाल के फ़ंक्शन इनवोकेशंस देख सकते हैं — जो नोटिफिकेशन भेजने का नतीजा हैं:

छवि 28 - Lambda फ़ंक्शन लॉग्स
Lambda फ़ंक्शंस इन संदेशों के साथ लगभग कुछ भी कर सकते हैं — उन्हें डेटाबेस में स्टोर करना, अन्य AWS सेवाओं को ट्रिगर करना, ईमेल भेजना, या बाहरी APIs कॉल करना। इससे SNS और Lambda इवेंट-ड्रिवन आर्किटेक्चर्स बनाने के लिए एक शक्तिशाली संयोजन बन जाता है। Lambda फ़ंक्शंस के बारे में और जानें Getting Started with AWS Lambda ट्यूटोरियल में।
अगले भाग में, आप SNS मॉनिटरिंग और लॉगिंग की बुनियादी बातें सीखेंगे।
एक विश्वसनीय नोटिफिकेशन सिस्टम बनाए रखने के लिए अपनी SNS गतिविधि पर नज़र रखना आवश्यक है।
Amazon CloudWatch आपकी सभी AWS सेवाओं — जिनमें SNS भी शामिल है — के लिए व्यापक मॉनिटरिंग प्रदान करता है। CloudWatch के साथ SNS सेट करने पर, आपको मैसेज डिलीवरी दर, विफलताएँ, और API उपयोग पैटर्न जैसे महत्वपूर्ण ऑपरेशनल मेट्रिक्स में दृश्यता मिलती है।
SNS के लिए CloudWatch मॉनिटरिंग शुरू करने के लिए, अपने AWS खाते में CloudWatch कंसोल पर जाएँ। वहाँ से, आप SNS के लिए पूर्व-कॉन्फ़िगर किए गए मेट्रिक्स तक पहुँच सकते हैं जिन्हें AWS स्वचालित रूप से एकत्र करता है।
मॉनिटर करने के लिए सबसे मूल्यवान SNS मेट्रिक्स में शामिल हैं:

छवि 29 - SNS के लिए डिफ़ॉल्ट CloudWatch डैशबोर्ड
CloudWatch अलार्म्स सेट करने से आप संभावित समस्याओं पर जल्दी प्रतिक्रिया दे सकते हैं, इससे पहले कि वे आपके उपयोगकर्ताओं को प्रभावित करें। उदाहरण के लिए, आप ऐसा अलार्म बना सकते हैं जो तब ट्रिगर हो जब मैसेज डिलीवरी विफलताएँ किसी सीमा से अधिक हो जाएँ:
यदि आपको निर्देशों की बजाय चित्र पसंद हैं, तो अपने रुचि के मेट्रिक, जैसे NumberOfNotificationsFailed, के लिए अलार्म बनाकर शुरू करें। ऐसे थ्रेशहोल्ड सेट करें जो अलार्म को सक्रिय करेंगे:

छवि 30 - अलार्म बनाना
और बस — अलार्म अब बनाया जा चुका है और सक्रिय है:

छवि 31 - अलार्म बनाना (2)
ये अलार्म्स समय रहते समस्याओं को सुलझाने और बाद में असंतुष्ट उपयोगकर्ताओं से सुनने के बीच का फ़र्क़ साबित हो सकते हैं।
AWS CloudTrail आपके AWS खाते में सभी API गतिविधियों को कैप्चर करता है, जिसमें SNS सेवा के भीतर किए गए कार्य भी शामिल हैं।
आपके SNS टॉपिक्स पर किए गए हर ऑपरेशन — चाहे कंसोल, CLI, या SDK के माध्यम से हो — CloudTrail लॉग्स में एक एंट्री बनाता है। ये लॉग्स सुरक्षा विश्लेषण, संसाधन परिवर्तन ट्रैकिंग और कम्प्लायंस ऑडिटिंग के लिए मूल्यवान जानकारी प्रदान करते हैं।
CloudTrail में SNS लॉग्स एक्सेस करने के लिए:
फिर से, यदि टेक्स्ट निर्देश पर्याप्त नहीं हैं, तो नीचे दी गई छवियों को देखें। नए ट्रेल का निर्माण करके शुरू करें:

छवि 32 - नया ट्रेल बनाना
फिर "Event history" के तहत, इवेंट्स को केवल SNS के लिए फ़िल्टर करें:

छवि 33 - लॉग्स फ़िल्टर करना
लॉग्स स्वतः S3 बकेट में संग्रहित होते हैं, जिसका मतलब है कि यह तरीका आपके लॉग्स के लिए स्थायी स्टोरेज प्रदान करता है और उन्नत क्वेरी करने में सक्षम बनाता है।
> AWS में स्टोरेज कैसे काम करता है? हमारी S3 और EFS गाइड पढ़ें।
संक्षेप में, CloudWatch मेट्रिक्स और CloudTrail लॉग्स को मिलाकर, आप एक व्यापक मॉनिटरिंग सिस्टम बनाते हैं जो सुनिश्चित करता है कि आपका SNS इन्फ्रास्ट्रक्चर विश्वसनीय रूप से संचालित हो।
अब आप AWS SNS की बुनियादी और उन्नत दोनों विशेषताएँ जानते हैं। अब शेष है — टॉपिक्स बनाने और संदेश भेजने के सर्वोत्तम तरीकों पर चर्चा करना।
अपनी SNS इन्फ्रास्ट्रक्चर सेट करते समय सुरक्षा सर्वोच्च प्राथमिकता होनी चाहिए। उचित नियंत्रणों के बिना, आपके टॉपिक्स अनधिकृत एक्सेस के प्रति संवेदनशील हो सकते हैं, जो एक बड़ा सुरक्षा जोखिम है।
AWS Identity and Access Management (IAM) आपको SNS टॉपिक्स को सुरक्षित करने के लिए आवश्यक टूल्स देता है। कम से कम विशेषाधिकार के सिद्धांत का पालन करने वाली नीतियाँ बनाकर शुरू करें — प्रत्येक उपयोगकर्ता या सेवा के लिए केवल वही परमिशंस दें जो आवश्यक हों। उदाहरण के लिए, आप कुछ एप्लिकेशंस को केवल संदेश प्रकाशित करने की अनुमति देना चाहेंगे, जबकि अन्य को केवल टॉपिक्स को सब्सक्राइब करने की आवश्यकता होगी।
यहाँ एक सैंपल IAM पॉलिसी है जो किसी विशिष्ट टॉपिक तक पब्लिशिंग को सीमित करती है:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sns:Publish",
"Resource": "sns-arn"
}
]
}
आप टॉपिक नीतियों का उपयोग करके यह भी नियंत्रित कर सकते हैं कि कौन-से AWS अकाउंट्स आपके टॉपिक्स को सब्सक्राइब कर सकते हैं। यह खासतौर पर तब महत्वपूर्ण होता है जब आप संगठनात्मक सीमाओं के पार डेटा साझा कर रहे हों।
CloudTrail का उपयोग करके परमिशंस का नियमित रूप से ऑडिट करना न भूलें और जो एक्सेस अब आवश्यक नहीं है, उसे हटा दें।
यदि सही तरीके से नहीं संभाला गया, तो अधिक संदेश मात्रा सब्सक्राइबर्स को अभिभूत कर सकती है। यही वह जगह है जहाँ SNS का अन्य AWS सेवाओं के साथ संयोजन आवश्यक हो जाता है।
एक लोकप्रिय पैटर्न "फैनआउट" आर्किटेक्चर है, जहाँ आप एक SNS टॉपिक पर संदेश प्रकाशित करते हैं, जिसमें कई SQS क्यूज़ सब्सक्राइब होती हैं। प्रत्येक क्यू फिर अलग-अलग प्रोसेसिंग सिस्टम्स को अपनी गति से फ़ीड कर सकती है। इससे आपके पब्लिशर्स उपभोक्ताओं से डीकपल हो जाते हैं, और ट्रैफिक स्पाइक्स के दौरान बफ़र प्रदान होता है।
रीयल-टाइम प्रोसेसिंग आवश्यकताओं के लिए, अपने टॉपिक्स को Lambda फ़ंक्शंस से सब्सक्राइब करने पर विचार करें। Lambda आपकी संदेश मात्रा के साथ स्वतः स्केल होता है, जिससे सर्वर्स को प्रोविज़न और मैनेज करने की ज़रूरत समाप्त हो जाती है।
हालाँकि SNS किफायती है, लेकिन आपकी संदेश मात्रा बढ़ने पर खर्च जल्दी बढ़ सकते हैं। कुछ रणनीतिक विकल्प आपकी लागत को नियंत्रित रखने में मदद कर सकते हैं।
सबसे पहले, अपने सब्सक्रिप्शन प्रोटोकॉल्स के बारे में चयनात्मक रहें। HTTP/HTTPS एंडपॉइंट्स सामान्यतः सबसे किफायती विकल्प होते हैं। ईमेल नोटिफिकेशंस सुविधाजनक तो हैं, लेकिन प्रति संदेश अधिक लागत होने के कारण उनका विवेकपूर्ण उपयोग करें।
मैसेज फ़िल्टरिंग एक और शक्तिशाली लागत-बचत टूल है। अपनी सब्सक्रिप्शंस पर फ़िल्टर पॉलिसीज़ लागू करके, आप सुनिश्चित करते हैं कि संदेश केवल इच्छुक सब्सक्राइबर्स तक ही जाएँ। उदाहरण के लिए, यदि आपके पास सभी सिस्टम अलर्ट्स के लिए एक टॉपिक है, तो आप चाहेंगे कि आपके ऑन-कॉल इंजीनियर्स अपनी शिफ्ट के दौरान केवल क्रिटिकल अलर्ट्स ही प्राप्त करें, न कि हर नोटिफिकेशन:
# Subscribe with a filter policy
response = sns.subscribe(
TopicArn="sns-arn",
Protocol="email",
Endpoint="oncall@example.com",
Attributes={"FilterPolicy": '{"severity": ["critical"]}'},
)
अंत में, AWS Cost Explorer में अपने SNS उपयोग की नियमित समीक्षा करें और टॉपिक्स को समेकित करने या अनुपयोगी सब्सक्रिप्शंस हटाने के अवसर तलाशें। अनुपयोगी या डुप्लिकेट संसाधन न केवल अनावश्यक लागत जोड़ते हैं, बल्कि आपकी आर्किटेक्चर को जटिल भी बनाते हैं।
इन सर्वोत्तम प्रथाओं का पालन करके, आप एक ऐसा SNS इंप्लीमेंटेशन बनाएँगे जो सुरक्षित, स्केलेबल और किफायती हो — यानी एक विश्वसनीय नोटिफिकेशन सेवा, बिना अप्रत्याशित खर्चों या सुरक्षा चिंताओं के।
यदि आपको डिस्ट्रीब्यूटेड एप्लिकेशंस में रियल-टाइम नोटिफिकेशन चाहिए, तो AWS SNS से बेहतर कुछ नहीं। इसका उपयोग आसान है, यह अन्य AWS सेवाओं के साथ अच्छी तरह एकीकृत होता है, और आपकी आवश्यकताओं के अनुरूप असीम रूप से स्केल कर सकता है।
SNS का पब्लिश-सब्सक्राइब मॉडल ऐसे नोटिफिकेशन सिस्टम्स लागू करना आसान बना देता है जो एक साथ कई चैनलों तक पहुँच सकते हैं। टॉपिक्स बनाने और सब्सक्राइबर्स प्रबंधित करने से लेकर मैसेज फ़िल्टरिंग और डेड लेटर क्यूज़ जैसी उन्नत सुविधाएँ लागू करने तक, अब आपके पास मज़बूत नोटिफिकेशन इन्फ्रास्ट्रक्चर बनाने का ज्ञान है।
आपने मॉनिटरिंग, सुरक्षा, और लागत प्रबंधन के महत्वपूर्ण पहलुओं के बारे में भी सीखा, जो उत्पादन वातावरण में आपके SNS इंप्लीमेंटेशन को विश्वसनीय और कुशल बनाए रखते हैं।
जैसे-जैसे एप्लिकेशंस इवेंट-ड्रिवन आर्किटेक्चर्स अपनाते जा रहे हैं, SNS जैसी सेवाएँ और भी मूल्यवान होती जा रही हैं। चाहे आप एक सरल अलर्ट सिस्टम बना रहे हों या जटिल माइक्रोसर्विसेज, इस ट्यूटोरियल में दिए गए पैटर्न आपके सिस्टम कंपोनेंट्स के बीच प्रभावी संचार के लिए आधार प्रदान करते हैं।
AWS के बारे में और जानने के लिए DataCamp के ये कोर्स फॉलो करें:
आप AWS सर्टिफ़िकेशन परीक्षाओं की तैयारी के लिए भी DataCamp का उपयोग कर सकते हैं — AWS Cloud Practitioner (CLF-C02)।
AWS SNS (Simple Notification Service) एक पूर्ण-प्रबंधित मैसेजिंग सेवा है, जो पब्लिशर्स से कई सब्सक्राइबर्स तक नोटिफिकेशंस भेजने में सक्षम बनाती है। SQS (Simple Queue Service) के विपरीत, जो क्यू-आधारित मॉडल का पालन करता है और जहाँ प्रत्येक संदेश एकल कंज़्यूमर द्वारा प्रोसेस होता है, SNS पब्लिश-सब्सक्राइब मॉडल का उपयोग करता है जो एक ही संदेश को एक साथ कई प्राप्तकर्ताओं तक प्रसारित करता है। यह बुनियादी अंतर SNS को इवेंट नोटिफिकेशंस के लिए आदर्श बनाता है, जबकि SQS टास्क प्रोसेसिंग के लिए बेहतर है।
AWS SNS कई प्रकार के सब्सक्राइबर एंडपॉइंट्स को सपोर्ट करता है, जिनमें ईमेल पते, SMS फ़ोन नंबर, SQS क्यूज़, Lambda फ़ंक्शंस, HTTP/HTTPS एंडपॉइंट्स और मोबाइल पुश नोटिफिकेशंस शामिल हैं। यह विविधता आपको नोटिफिकेशंस की डिलीवरी और प्रोसेसिंग में लचीलापन देती है, जिससे आप एक ही प्रकाशित संदेश के साथ मानव प्राप्तकर्ताओं (ईमेल या SMS के माध्यम से) और अन्य सिस्टम्स (Lambda, SQS या HTTP एंडपॉइंट्स के माध्यम से) दोनों तक पहुँच सकते हैं।
SNS टॉपिक्स को सुरक्षित करने के लिए IAM पॉलिसीज़ के माध्यम से उचित एक्सेस कंट्रोल्स लागू करना शामिल है, जो कम से कम विशेषाधिकार के सिद्धांत का पालन करती हों। आप यह सीमित कर सकते हैं कि कौन टॉपिक्स पर पब्लिश कर सकता है और सब्सक्रिप्शंस मैनेज कर सकता है, और किन AWS अकाउंट्स को सब्सक्राइब करने की अनुमति है, यह नियंत्रित करने के लिए टॉपिक पॉलिसीज़ का उपयोग कर सकते हैं। संवेदनशील डेटा के लिए, AWS SNS सर्वर-साइड एन्क्रिप्शन सपोर्ट करता है, जो ट्रांसमिशन के दौरान संदेश सामग्री की सुरक्षा करता है। CloudTrail लॉग्स का उपयोग करके नियमित सुरक्षा ऑडिट्स अनधिकृत एक्सेस प्रयासों या संभावित कमजोरियों की पहचान में मदद करते हैं।
SNS में मैसेज फ़िल्टरिंग सब्सक्राइबर्स को केवल वही नोटिफिकेशंस प्राप्त करने देती है जो उनके लिए महत्वपूर्ण हों। यह सब्सक्राइबर्स द्वारा मैसेज एट्रिब्यूट्स के आधार पर परिभाषित फ़िल्टर पॉलिसीज़ के माध्यम से किया जाता है। जब आप विशेष एट्रिब्यूट्स (जैसे ऑर्डर वैल्यू, रीजन, या प्रायोरिटी लेवल) के साथ संदेश प्रकाशित करते हैं, तो SNS इन एट्रिब्यूट्स की तुलना प्रत्येक सब्सक्राइबर की फ़िल्टर पॉलिसी से करता है और केवल मिलान होने पर संदेश डिलीवर करता है। फ़िल्टरिंग आपकी एप्लिकेशन में नहीं, बल्कि AWS की तरफ होती है, जिससे दक्षता बढ़ती है और अनावश्यक मैसेज ट्रैफ़िक कम होता है।
डेड लेटर क्यूज़ SNS में संदेश डिलीवरी विफलताओं के लिए एक सुरक्षा जाल की तरह काम करती हैं। जब कोई संदेश किसी सब्सक्राइबर तक नहीं पहुँच पाता (आमतौर पर सब्सक्राइबर के अनुपलब्ध होने या त्रुटि लौटाने के कारण), तो SNS उसे पूरी तरह खोने के बजाय एक निर्दिष्ट SQS क्यू में रीडायरेक्ट कर सकता है। यह DLQ सिस्टम विफल डिलीवरीज़ को कैप्चर, विश्लेषण, और संभावित रूप से फिर से आज़माने की सुविधा देता है। यह विशेष रूप से मिशन-क्रिटिकल नोटिफिकेशंस के लिए मूल्यवान है, जहाँ संदेश का खोना महत्वपूर्ण व्यावसायिक प्रभाव डाल सकता है, और अन्यथा अनदेखे रह जाने वाले डिलीवरी मुद्दों में दृश्यता प्रदान करता है।
AWS के बारे में और जानें, इन कोर्सेज़ के साथ!
{count, plural, one {कोर्स} other {कोर्स}}
{count, plural, one {कोर्स} other {कोर्स}}
{count, plural, one {कोर्स} other {कोर्स}}