AWS CLI SNS Commands: Topic बनवा, Subscribe आणि Publish
एक message अनेकांना: topic बनवा, email आणि SQS subscribe करा, publish, filter आणि cleanup.
या chapter मध्ये तुम्ही काय शिकाल
- Topic बनवा
- Email आणि SQS subscribe
- Messages publish
- Filter policies
- SMS आणि cleanup
1. मोठं चित्र: WhatsApp group
हे का लागतं?
Society WhatsApp group मध्ये एकदा post केलं की सगळ्यांना मिळतं. SNS तोच group: topic ला एकदा publish, प्रत्येक subscriber ला copy.
हे काय आहे?
Commands aws sns मध्ये: create-topic, subscribe, publish, set-subscription-attributes, delete-topic.
कसं करायचं (step by step)
2. Topic बनवा
हे का लागतं?
अनेक systems ना तीच बातमी हवी: "order placed".
हे काय आहे?
Topic म्हणजे ARN असलेला channel. Standard जलद; FIFO order राखतो.
कसं करायचं (step by step)
- बनवा.
T=$(aws sns create-topic --name cli-alerts --query TopicArn --output text)
echo $T
अपेक्षित output:
arn:aws:sns:ap-south-1:111122223333:cli-alerts
- Topics list.
aws sns list-topics --query "Topics[].TopicArn" --output text
अपेक्षित output:
arn:aws:sns:ap-south-1:111122223333:cli-alerts
3. Subscribe
हे का लागतं?
लोकांना email, programs ना queue.
हे काय आहे?
subscribe protocol (email, sqs, lambda, https, sms) आणि endpoint घेतो. Email ला confirm click.
कसं करायचं (step by step)
- Email subscribe.
aws sns subscribe --topic-arn $T --protocol email --notification-endpoint you@example.com
अपेक्षित output:
{"SubscriptionArn": "pending confirmation"}
- SQS queue subscribe.
Q=arn:aws:sqs:ap-south-1:111122223333:cli-q
aws sns subscribe --topic-arn $T --protocol sqs --notification-endpoint $Q --attributes RawMessageDelivery=true --query SubscriptionArn --output text
अपेक्षित output:
arn:aws:sns:ap-south-1:111122223333:cli-alerts:5e6f...
- Subscriptions list.
aws sns list-subscriptions-by-topic --topic-arn $T --query "Subscriptions[].[Protocol,SubscriptionArn]" --output text
अपेक्षित output:
email PendingConfirmation
sqs arn:aws:sns:...:5e6f...
4. Publish
हे का लागतं?
App ने event एकदा सांगायचा, कोण ऐकतंय माहीत नसताना.
हे काय आहे?
publish message, subject आणि attributes सह पाठवतो. MessageId परत.
कसं करायचं (step by step)
- Message publish.
aws sns publish --topic-arn $T --subject "Order" --message "Order 101 placed" --message-attributes '{"type":{"DataType":"String","StringValue":"order"}}' --query MessageId --output text
अपेक्षित output:
b7c8d9e0-1234-5678-9abc-def012345678
- एक SMS.
aws sns publish --phone-number +919800000000 --message "OTP 4321" --query MessageId --output text
अपेक्षित output:
f1e2d3c4-...
5. Filter policies
हे का लागतं?
Billing queue ला फक्त payment events हवेत.
हे काय आहे?
Subscription वरची FilterPolicy matching attributes चेच messages सोडते.
कसं करायचं (step by step)
- Filter लावा.
S=$(aws sns list-subscriptions-by-topic --topic-arn $T --query "Subscriptions[?Protocol=='sqs'].SubscriptionArn" --output text)
aws sns set-subscription-attributes --subscription-arn $S --attribute-name FilterPolicy --attribute-value '{"type":["payment"]}'
अपेक्षित output:
(no output means success)
- Verify.
aws sns get-subscription-attributes --subscription-arn $S --query Attributes.FilterPolicy --output text
अपेक्षित output:
{"type":["payment"]}
6. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये
हे का लागतं?
Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.
हे काय आहे?
प्रत्येक CLI command म्हणजे एक API call. उदा. aws sns publish --topic-arn $T --message "hi" म्हणजे Publish API.
कसं करायचं (step by step)
हीच action (Publish) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.
| Stack | Code |
|---|---|
| Python (boto3) | boto3.client("sns").publish(TopicArn=T,Message="hi") |
| Node.js (v3) | await sns.send(new PublishCommand({TopicArn:T,Message:"hi"})); |
| Java (v2) | sns.publish(r -> r.topicArn(t).message("hi")); |
| Go (v2) | c.Publish(ctx, &sns.PublishInput{TopicArn: aws.String(t), Message: aws.String("hi")}) |
| .NET | await sns.PublishAsync(new PublishRequest{TopicArn=t,Message="hi"}); |
| PHP | $sns->publish(["TopicArn"=>$t,"Message"=>"hi"]); |
7. काहीही खर्च चालू राहू नये म्हणून cleanup
हे का लागतं?
चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.
हे काय आहे?
उलट्या क्रमाने delete करा: आधी children, मग parents.
कसं करायचं (step by step)
- Topic delete (subscriptions सोबत).
aws sns delete-topic --topic-arn $T
अपेक्षित output:
(no output means success)
- Verify.
aws sns list-topics --query "Topics[?contains(TopicArn,'cli-alerts')]"
अपेक्षित output:
[]
Ravindra Bagale's Tip
SNS → SQS साठी queue policy ने sns.amazonaws.com ला topic source सह SendMessage allow करायला हवं, नाहीतर messages शांतपणे येत नाहीत.
8. मुलाखत प्रश्न आणि उत्तरं
प्र. SNS vs SQS?
SNS अनेकांना push; SQS pull होईपर्यंत ठेवतो.
प्र. Fan-out काय?
एक topic अनेक queues.
प्र. Pending confirmation का?
Spam टाळायला confirm.
प्र. Filter policy काय करते?
न जुळणारे messages सोडत नाही.
प्र. RawMessageDelivery काय?
फक्त body, SNS wrapper शिवाय.
घरी करून बघा
- एक topic दोन queues ला, एकदा publish.
- एका queue ला फक्त type=payment.
थोडक्यात सांगायचं तर
- create-topic.
- subscribe protocol + endpoint.
- Email confirm.
- एकदा publish.
- FilterPolicy.
सराव Tasks
Stockholm Games हा स्टॉकहोम मधला गेमिंग व्यवसाय आहे. Erik Lindqvist त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे SEK मध्ये मोजले जातात आणि AWS resources eu-north-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 11
सोपं एका topic वर publish
का: Alerting app ला फक्त publish लागतं.
काय करायचं: फक्त arn:aws:sns:eu-north-1:124495484726:sthlmgames-alerts वर sns:Publish allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
सोपं Message publish करा
का: एक publish email, SMS, SQS व Lambda subscribers ना एकदम पोचतो.
काय करायचं: arn:aws:sns:eu-north-1:124495484726:sthlmgames-alerts वर "Stock low in Stockholm" message "Stock alert" subject सह publish करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं SNS topic बनवा
का: Topic म्हणजे channel: एकदा publish, सगळ्या subscribers ना मिळतं.
काय करायचं: sthlmgames-alerts topic बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Queue बनवा
का: Worker तयार होईपर्यंत queue काम सुरक्षित ठेवते.
काय करायचं: sthlmgames-orders queue बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम थेट SMS पाठवा
का: SNS topic शिवाय phone number वर SMS पाठवू शकतो.
काय करायचं: +919800000001 वर "Your OTP is 482913" SMS पाठवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Producer फक्त send करू शकतो
का: Web app ने jobs टाकावे पण वाचू/delete करू नये.
काय करायचं: फक्त arn:aws:sqs:eu-north-1:124495484726:sthlmgames-orders वर sqs:SendMessage allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Email subscribe करा
का: Email subscribers नी messages मिळण्याआधी confirm link दाबावी लागते.
काय करायचं: ops@sthlmgames.se ला email ने arn:aws:sns:eu-north-1:124495484726:sthlmgames-alerts वर subscribe करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Processed message delete करा
का: Delete न केल्यास visibility timeout नंतर message परत येतो.
काय करायचं: $RH मध्ये ठेवलेल्या receipt handle चा message https://sqs.eu-north-1.amazonaws.com/124495484726/sthlmgames-orders मधून delete करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Subscription filter policy द्या
का: Filter policy subscriber ला फक्त हवे ते messages पाठवते.
काय करायचं: Subscription arn:aws:sns:eu-north-1:124495484726:sthlmgames-alerts:4b1c-77 ची FilterPolicy {"type":["refund"]} करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Queue ला topic वर subscribe करा
का: Fan-out: एक SNS message अनेक SQS queues मध्ये copy होतो.
काय करायचं: Queue arn:aws:sqs:eu-north-1:124495484726:sthlmgames-billing ला arn:aws:sns:eu-north-1:124495484726:sthlmgames-alerts वर subscribe करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Dead-letter queue जोडा
का: काही failed tries नंतर वाईट messages DLQ मध्ये जातात.
काय करायचं: attrs.json मधले attributes (RedrivePolicy) https://sqs.eu-north-1.amazonaws.com/124495484726/sthlmgames-orders वर लावा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.




अजून cards: Ravi Sir's Cards.