Ravindra BagaleCourses & study guides English

Project: S3, Lambda, SES आणि DynamoDB ने Upload Receipt Emails बनवा (Source Code)

Upload नंतर receipt mail. S3 → Lambda → SES (किंवा SNS) + DynamoDB. SES sandbox लक्षात ठेवा.

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

  • S3 receipt flow
  • SES sandbox
  • SNS fallback
  • Cleanup

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

हे का लागतं?

Assignment upload → teacher ला email proof.

हे काय आहे?

ObjectCreated → SES/SNS → DynamoDB receipt.

SES sandbox

नवीन accounts फक्त verified From/To. दोन्ही verify करा. अडकल्यास USE_SNS=1 + email topic.

Download: upload-receipt-email.zip

2. Lab

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

A. Bucket + table + mail

  1. Bucket BPA on.
  2. Table PK receiptId.
  3. SES verify किंवा SNS.

B. Lambda + trigger

  1. IAM SES/SNS/DDB/S3.
  2. Env From/To किंवा SNS.
  3. S3 event → upload → verify.

Cleanup

  1. Event, Lambda, bucket, table.
  2. SNS topic delete.

3. Interview

प्र. SES का?

Managed, server नको.

प्र. Sandbox?

Spam रोखतो.

प्र. SNS fallback?

Class मध्ये SES अडकल्यास.

प्र. Idempotent?

Dedupe / version.

प्र. Cleanup?

Event, Lambda, bucket, table.

घरी करून बघा

  1. Email मध्ये etag.
  2. Error alarm.

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

  1. S3 → Lambda → SES/SNS + DynamoDB.
  2. SES sandbox.
  3. Receipts = audit.
  4. Cleanup.

सराव Tasks

या scenario बद्दल

London Legal LLP हा लंडन मधला कायदा सेवा व्यवसाय आहे. Oliver Hughes त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे GBP मध्ये मोजले जातात आणि AWS resources eu-west-2 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Functions ची list

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

काय करायचं: eu-west-2 मधले 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 मध्ये ठेवतो.

काय करायचं: londonlegal-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.

काय करायचं: londonlegal-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 थांबवतो.

काय करायचं: londonlegal-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 लागतो.

काय करायचं: londonlegal-orders-fn function बनवा: runtime python3.12, handler app.handler, role arn:aws:iam::114543297314: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 बाहेर ठेवा.

काय करायचं: londonlegal-orders-fn वर environment variable TABLE=londonlegal-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 लागतो.

काय करायचं: londonlegal-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-west-2:114543297314:londonlegal-orders पासून londonlegal-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 लागते.

काय करायचं: londonlegal-orders-fn ला s3invoke permission statement द्या: s3.amazonaws.com ने bucket arn:aws:s3:::londonlegal-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: Upload receipt email. Drive-style upload नंतर receipt mail. S3 वर तोच idea. S3 → Lambda → SES/SNS → DynamoDB receipt. Bucket event + Lambda + SES identity किंवा SNS. Upload → email + DynamoDB row.
उजळणी card: Upload receipt email · PNG download करा · Card page उघडा
उजळणी card: SES vs SNS fallback. SES sandbox = फक्त verified identities. Lab मध्ये exit अवघड. SES = email service. Sandbox block → SNS email topic fallback. SES verify किंवा USE_SNS=1 + TOPIC_ARN. SES किंवा SNS — DynamoDB एक row.
उजळणी card: SES vs SNS fallback · PNG download करा · Card page उघडा
उजळणी card: Idempotent receipts. S3 retry = दोनदा email. User गोंधळ. Idempotent = दोनदा safe. Key = versionId/etag; आधी sent तर skip. Condition PutItem किंवा GetItem आधी; मग email. दोन event deliveries → एक email, एक row.
उजळणी card: Idempotent receipts · PNG download करा · Card page उघडा
तुलना: Amazon SES vs Amazon SNS email. Amazon SES: Email sending / templates. Amazon SNS email: Simple pub/sub + email subscribers.
तुलना: Amazon SES vs Amazon SNS email · PNG download करा · Card page उघडा
मुलाखत card: EC2 SMTP ऐवजी SES का?. Managed email + IAM; mail server patch नको. Sandbox early mistakes मर्यादित; prod limits जाणीवपूर्वक. Verified identity + SendEmail.
मुलाखत card: EC2 SMTP ऐवजी SES का? · PNG download करा · Card page उघडा
मुलाखत card: दोनदा receipt email कसे टाळाल?. S3 event duplicate शक्य; idempotent handler. etag/versionId key; row असेल तर skip. Condition PutItem → मग SES.
मुलाखत card: दोनदा receipt email कसे टाळाल? · PNG download करा · Card page उघडा

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