AWS CLI SQS Commands: Messages Send, Receive आणि Delete करा
कामासाठी रांग: standard व FIFO queues, send, receive, delete, visibility timeout, dead-letter queues आणि purge.
या chapter मध्ये तुम्ही काय शिकाल
- Standard आणि FIFO queues
- Messages send, receive
- Process नंतर delete
- Visibility timeout, long polling
- Dead-letter queues, purge
1. मोठं चित्र: clinic मधली token system
हे का लागतं?
Clinic मध्ये token घेऊन थांबता. Doctor एक-एक token बोलावतो; doctor busy असला तरी कोणी हरवत नाही. Worker तयार होईपर्यंत SQS messages सांभाळतो.
हे काय आहे?
Commands aws sqs मध्ये: create-queue, send-message, receive-message, delete-message, set-queue-attributes, purge-queue.
कसं करायचं (step by step)
2. Queues बनवा
हे का लागतं?
Orders process पेक्षा जलद येतात. Buffer हवा.
हे काय आहे?
Standard queues जवळपास unlimited, कधी दोनदा किंवा क्रम बदलून. FIFO (.fifo) क्रम राखतो, duplicates काढतो.
कसं करायचं (step by step)
- Standard queue.
Q=$(aws sqs create-queue --queue-name cli-q --query QueueUrl --output text)
echo $Q
अपेक्षित output:
https://sqs.ap-south-1.amazonaws.com/111122223333/cli-q
- FIFO queue.
F=$(aws sqs create-queue --queue-name cli-q.fifo --attributes FifoQueue=true,ContentBasedDeduplication=true --query QueueUrl --output text)
echo $F
अपेक्षित output:
https://sqs.ap-south-1.amazonaws.com/111122223333/cli-q.fifo
3. Send, receive आणि delete
हे का लागतं?
Worker ने job घ्यायचा, करायचा, done करायचा.
हे काय आहे?
receive-message body आणि ReceiptHandle देतो. त्याच handle ने delete-message केल्यावरच कायमचा जातो.
कसं करायचं (step by step)
- Send.
aws sqs send-message --queue-url $Q --message-body "order 101" --query MessageId --output text
अपेक्षित output:
4c5d6e7f-8a9b-0c1d-2e3f-405060708090
- FIFO ला group सह.
aws sqs send-message --queue-url $F --message-body "order 101" --message-group-id shop1 --query SequenceNumber --output text
अपेक्षित output:
18887000000000000000
- Long polling ने receive.
aws sqs receive-message --queue-url $Q --wait-time-seconds 10 --max-number-of-messages 1 --query "Messages[0].[Body,ReceiptHandle]" --output text
अपेक्षित output:
order 101 AQEBzW8k...
- Delete.
RH=$(aws sqs receive-message --queue-url $Q --visibility-timeout 0 --query "Messages[0].ReceiptHandle" --output text)
aws sqs delete-message --queue-url $Q --receipt-handle "$RH"
aws sqs get-queue-attributes --queue-url $Q --attribute-names ApproximateNumberOfMessages --query Attributes --output text
अपेक्षित output:
0
4. Visibility timeout
हे का लागतं?
Worker मध्येच crash झाला तर job हरवू नये.
हे काय आहे?
Receive नंतर message VisibilityTimeout seconds लपतो. वेळेत delete नाही तर परत दिसतो.
कसं करायचं (step by step)
- 60 seconds.
aws sqs set-queue-attributes --queue-url $Q --attributes VisibilityTimeout=60
aws sqs get-queue-attributes --queue-url $Q --attribute-names VisibilityTimeout --query Attributes.VisibilityTimeout --output text
अपेक्षित output:
60
5. Dead-letter queue आणि purge
हे का लागतं?
कायम fail होणारा message रांग अडवू नये.
हे काय आहे?
RedrivePolicy maxReceiveCount tries नंतर message DLQ ला हलवते. purge-queue queue रिकामी करते.
कसं करायचं (step by step)
- DLQ बनवून जोडा.
D=$(aws sqs create-queue --queue-name cli-dlq --query QueueUrl --output text)
DA=$(aws sqs get-queue-attributes --queue-url $D --attribute-names QueueArn --query Attributes.QueueArn --output text)
cat > rp.json <<J
{"RedrivePolicy":"{\"deadLetterTargetArn\":\"$DA\",\"maxReceiveCount\":\"3\"}"}
J
aws sqs set-queue-attributes --queue-url $Q --attributes file://rp.json
aws sqs get-queue-attributes --queue-url $Q --attribute-names RedrivePolicy --query Attributes.RedrivePolicy --output text
अपेक्षित output:
{"deadLetterTargetArn":"arn:aws:sqs:ap-south-1:111122223333:cli-dlq","maxReceiveCount":"3"}
- Queue purge.
aws sqs purge-queue --queue-url $Q
अपेक्षित output:
(no output means success)
- DLQ messages परत.
aws sqs start-message-move-task --source-arn $DA --query TaskHandle --output text
अपेक्षित output:
eyJ0YXNr...
6. हीच action Python, Node.js, Java, Go, .NET आणि PHP मध्ये
हे का लागतं?
Scripts CLI मध्ये सुरू होतात. Apps तोच API SDK मधून call करतात. दोन्ही माहीत असले की test केलेली command थेट code मध्ये नेता येते.
हे काय आहे?
प्रत्येक CLI command म्हणजे एक API call. उदा. aws sqs send-message --queue-url $Q --message-body hi म्हणजे Send message API.
कसं करायचं (step by step)
हीच action (Message पाठवा) code मधून. प्रत्येक SDK CLI सारखेच profile, region आणि credentials वाचतो.
| Stack | Code |
|---|---|
| Python (boto3) | boto3.client("sqs").send_message(QueueUrl=q,MessageBody="hi") |
| Node.js (v3) | await sqs.send(new SendMessageCommand({QueueUrl:q,MessageBody:"hi"})); |
| Java (v2) | sqs.sendMessage(r -> r.queueUrl(q).messageBody("hi")); |
| Go (v2) | c.SendMessage(ctx, &sqs.SendMessageInput{QueueUrl: aws.String(q), MessageBody: aws.String("hi")}) |
| .NET | await sqs.SendMessageAsync(q,"hi"); |
| PHP | $sqs->sendMessage(["QueueUrl"=>$q,"MessageBody"=>"hi"]); |
7. काहीही खर्च चालू राहू नये म्हणून cleanup
हे का लागतं?
चालू ठेवलेले lab resources पैसे खातात आणि security risk बनतात.
हे काय आहे?
उलट्या क्रमाने delete करा: आधी children, मग parents.
कसं करायचं (step by step)
- Queues delete.
for u in $Q $F $D; do aws sqs delete-queue --queue-url $u; done
अपेक्षित output:
(no output means success)
- Verify (60 s पर्यंत).
aws sqs list-queues --queue-name-prefix cli --query QueueUrls
अपेक्षित output:
null
Ravindra Bagale's Tip
--wait-time-seconds 20 (long polling) वापरा. Short polling बऱ्याचदा रिकामं देतं आणि प्रत्येक call चे पैसे.
8. मुलाखत प्रश्न आणि उत्तरं
प्र. Standard vs FIFO?
Standard जलद, कधी duplicate; FIFO क्रम, एकदाच.
प्र. Visibility timeout?
Receive नंतर लपण्याचा वेळ.
प्र. ReceiptHandle?
Delete साठी लागणारा token.
प्र. DLQ का?
सतत fail होणारे बाजूला.
प्र. Long vs short polling?
Long 20 s थांबतो; कमी cost.
घरी करून बघा
- 5 messages पाठवा, delete न करता receive, timeout नंतर परत येतात ते बघा.
- maxReceiveCount 2 लावून message DLQ मध्ये जाताना बघा.
थोडक्यात सांगायचं तर
- create-queue.
- Receive मग delete.
- VisibilityTimeout.
- RedrivePolicy ने DLQ.
- Long polling.
सराव Tasks
Hyderabad Biryani Hub हा हैदराबाद मधला क्लाउड किचन व्यवसाय आहे. Syed Imran त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.
0 / 12
सोपं Queue बनवा
का: Worker तयार होईपर्यंत queue काम सुरक्षित ठेवते.
काय करायचं: hydbiryani-orders queue बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Message पाठवा
का: Producer job queue मध्ये टाकतो व पुढे जातो.
काय करायचं: https://sqs.ap-south-2.amazonaws.com/130300927383/hydbiryani-orders वर body {"orderId":"o-101"} पाठवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं Queue URL शोधा
का: बहुतेक SQS commands ना URL लागतो, नाव नाही.
काय करायचं: hydbiryani-orders queue चा URL मिळवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
सोपं एक function invoke
का: Caller ने फक्त लागणारा function invoke करावा.
काय करायचं: फक्त arn:aws:lambda:ap-south-2:130300927383:function:hydbiryani-orders-fn वर lambda:InvokeFunction allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Producer फक्त send करू शकतो
का: Web app ने jobs टाकावे पण वाचू/delete करू नये.
काय करायचं: फक्त arn:aws:sqs:ap-south-2:130300927383:hydbiryani-orders वर sqs:SendMessage allow करा.
- { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
- प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
- Task ला लागेल तेवढंच द्या (least privilege).
- Double quotes व commas नीट वापरा. Check answer दाबा.
मध्यम Processed message delete करा
का: Delete न केल्यास visibility timeout नंतर message परत येतो.
काय करायचं: $RH मध्ये ठेवलेल्या receipt handle चा message https://sqs.ap-south-2.amazonaws.com/130300927383/hydbiryani-orders मधून delete करा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Long polling ने messages घ्या
का: Long polling messages ची वाट पाहतो, empty calls कमी.
काय करायचं: https://sqs.ap-south-2.amazonaws.com/130300927383/hydbiryani-orders मधून 20 seconds पर्यंत थांबून कमाल 10 messages घ्या.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
मध्यम Test queue रिकामी करा
का: Purge सगळे messages एकदम काढतो, फक्त test queues साठी.
काय करायचं: https://sqs.ap-south-2.amazonaws.com/130300927383/hydbiryani-test queue purge करा.
- 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.ap-south-2.amazonaws.com/130300927383/hydbiryani-orders वर लावा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड FIFO queue बनवा
का: FIFO queues order राखतात व duplicates काढतात, उदा. payments.
काय करायचं: FifoQueue=true सह hydbiryani-payments.fifo FIFO queue बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड SQS queue Lambda ला जोडा
का: Event source mapping मुळे Lambda queue poll करून batches मध्ये messages process करतो.
काय करायचं: Queue arn:aws:sqs:ap-south-2:130300927383:hydbiryani-orders पासून hydbiryani-orders-fn ला batch size 10 सह event source mapping बनवा.
- Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
- aws लिहा, मग service चं नाव, मग operation (action शब्द).
- प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
- Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.
अवघड Lambda GB-seconds
का: Lambda memory × time bill करतो.
काय करायचं: 1,000,000 invocations, 512 MB, प्रत्येकी 200 ms. किती GB-seconds?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.




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