Ravindra BagaleCourses & study guides English

Project: Lambda, SNS आणि DynamoDB ने OTP Notifier बनवा (Source Code)

UPI/banking OTP. Lab API: DynamoDB hash + SNS. Email SNS prefer करा — SMS पैसे + sandbox.

या chapter मध्ये तुम्ही काय शिकाल

  • request + verify
  • hash + expiry
  • SNS email/SMS
  • Cost warnings + cleanup

1. रोजचं उदाहरण

हे का लागतं?

6 digits पाठवा, user टाइप करो. Expiry जलद; raw OTP plain text नको.

हे काय आहे?

POST /otp/request आणि /otp/verify. sha256 hash + expiry + SNS.

Cost आणि sandbox

SNS SMS प्रति message bill + sandbox. Class मध्ये email topic वापरा; SMS_MODE बंद.

Download: otp-notifier.zip

2. Lab

कसं करायचं (step by step)

A. Table + topic

  1. Table PK dest.
  2. SNS email topic.

B. Lambda + API

  1. Role DynamoDB + Publish.
  2. Env TABLE_NAME, TOPIC_ARN. SMS_MODE नको.
  3. दोन्ही POST routes.
curl -s -X POST "$API_BASE/otp/request" -H 'content-type: application/json' \
  -d '{"dest":"you@example.com"}'
# read OTP from email, then:
curl -s -X POST "$API_BASE/otp/verify" -H 'content-type: application/json' \
  -d '{"dest":"you@example.com","otp":"123456"}'

Cleanup

  1. सर्व delete.
  2. SMS experiment cleanup.

3. Interview

प्र. Hash का?

DB leak मध्ये OTP दिसू नये.

प्र. Expiry का?

Short-lived secret.

प्र. SMS vs email?

Email शिकण्यासाठी सुरक्षित.

प्र. Rate limit?

Usage plan / counters.

प्र. Cleanup?

API, Lambda, table, topic.

घरी करून बघा

  1. 5 fails नंतर lock.
  2. TTL on expiresAt.

थोडक्यात सांगायचं तर

  1. OTP = request + verify + hash + SNS.
  2. Class मध्ये email.
  3. Raw OTP log नको.
  4. Cleanup.

सराव Tasks

या scenario बद्दल

Stockholm Games हा स्टॉकहोम मधला गेमिंग व्यवसाय आहे. Erik Lindqvist त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे SEK मध्ये मोजले जातात आणि AWS resources eu-north-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Functions ची list

का: या Region मध्ये कोणते functions आहेत ते पाहा.

काय करायचं: eu-north-1 मधले Lambda functions दाखवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Function invoke करा

का: Invoke function आत्ता चालवतो व उत्तर file मध्ये ठेवतो.

काय करायचं: sthlmgames-orders-fn invoke करा व response out.json मध्ये ठेवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Lambda role साठी trust policy

का: Trust policy role कोण घेऊ शकतो ते सांगते.

काय करायचं: lambda.amazonaws.com ला role assume करू देणारी trust policy लिहा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

मध्यम Item टाका

का: DynamoDB JSON प्रत्येक value चा type दाखवतो: S string, N number.

काय करायचं: sthlmgames-orders मध्ये orderId "o-101" (string) व amount 2500 (number) असलेला item टाका.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Timeout व memory बदला

का: जास्त memory म्हणजे जास्त CPU; timeout अडकलेले runs थांबवतो.

काय करायचं: sthlmgames-orders-fn चा timeout 30 seconds व memory 512 MB करा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

मध्यम Function ला logs लिहू द्या

का: या actions शिवाय Lambda logs CloudWatch मध्ये दिसत नाहीत.

काय करायचं: फक्त arn:aws:logs:*:*:* वर logs:CreateLogGroup, logs:CreateLogStream, logs:PutLogEvents allow करा.

कसं करायचं:
  1. { "Version": "2012-10-17", "Statement": [ ... ] } ने सुरू करा.
  2. प्रत्येक statement मध्ये Effect, Action व Resource लिहा.
  3. Task ला लागेल तेवढंच द्या (least privilege).
  4. Double quotes व commas नीट वापरा. Check answer दाबा.

अवघड Lambda function बनवा

का: Lambda ला code zip, runtime, handler नाव व execution role लागतो.

काय करायचं: sthlmgames-orders-fn function बनवा: runtime python3.12, handler app.handler, role arn:aws:iam::124495484726:role/lambda-basic, code function.zip मध्ये.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Environment variables द्या

का: Table नावांसारख्या settings code बाहेर ठेवा.

काय करायचं: sthlmgames-orders-fn वर environment variable TABLE=sthlmgames-orders द्या.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड JSON payload सह invoke करा

का: CLI v2 मध्ये raw JSON साठी --cli-binary-format raw-in-base64-out लागतो.

काय करायचं: sthlmgames-orders-fn ला payload {"orderId":"o-101"} (raw JSON) सह invoke करा व उत्तर out.json मध्ये.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड Lambda GB-seconds

का: Lambda memory × time bill करतो.

काय करायचं: 1,000,000 invocations, 512 MB, प्रत्येकी 200 ms. किती GB-seconds?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

अवघड SQS queue Lambda ला जोडा

का: Event source mapping मुळे Lambda queue poll करून batches मध्ये messages process करतो.

काय करायचं: Queue arn:aws:sqs:eu-north-1:124495484726:sthlmgames-orders पासून sthlmgames-orders-fn ला batch size 10 सह event source mapping बनवा.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

अवघड S3 ला function call करू द्या

का: S3 function invoke करण्याआधी resource-based permission लागते.

काय करायचं: sthlmgames-orders-fn ला s3invoke permission statement द्या: s3.amazonaws.com ने bucket arn:aws:s3:::sthlmgames-uploads कडून lambda:InvokeFunction करावं.

कसं करायचं:
  1. Task वाचा आणि ते कोणत्या AWS service बद्दल आहे ते ठरवा.
  2. aws लिहा, मग service चं नाव, मग operation (action शब्द).
  3. प्रत्येक आवश्यक flag (--name) व त्यापुढे task मधली value लिहा.
  4. Flags कोणत्याही क्रमाने चालतात. Check answer दाबा.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

उजळणी card: SNS सह OTP notifier. UPI/banking OTP: expiry + plain text नको. request → hash+expiry+SNS; verify → hash check. Table + SNS email + Lambda + 2 routes. request → email OTP → verify ok.
उजळणी card: SNS सह OTP notifier · PNG download करा · Card page उघडा
उजळणी card: OTP hash आणि expiry. Raw OTP leak = login. कायमचे codes धोकादायक. फक्त hash store; expiresAt epoch; नंतर reject. random → sha256 → PutItem; raw log नको. 5 min नंतर जुने digits → false.
उजळणी card: OTP hash आणि expiry · PNG download करा · Card page उघडा
उजळणी card: SNS email vs SMS खर्च. SMS per message + sandbox. Class lab चुकून पैसे जाळू शकतो. शिकण्यासाठी email topic; SMS_MODE बंद. Production = limits + sandbox exit. Email topic confirm; SMS_MODE=1 नको. 10 students = 10 emails; SMS bill नाही.
उजळणी card: SNS email vs SMS खर्च · PNG download करा · Card page उघडा
तुलना: SNS email OTP vs SNS SMS OTP. SNS email OTP: Free-tier friendly; एकदा confirm. SNS SMS OTP: Per-message cost; SMS sandbox.
तुलना: SNS email OTP vs SNS SMS OTP · PNG download करा · Card page उघडा
मुलाखत card: OTP चा hash का store करायचा?. DB leak मध्ये usable OTP दिसू नये. One-way hash; input पुन्हा hash करून compare. sha256(dest:otp) + expiresAt; raw log नको.
मुलाखत card: OTP चा hash का store करायचा? · PNG download करा · Card page उघडा
मुलाखत card: Class lab मध्ये SNS email का?. SMS per message + sandbox exit. तोच pub/sub flow; surprise charge नाही. SMS_MODE नको; email confirm.
मुलाखत card: Class lab मध्ये SNS email का? · PNG download करा · Card page उघडा

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