Ravindra BagaleCourses & study guides English

AWS Lambda Triggers: S3, EventBridge, SQS आणि SNS सोप्या भाषेत

Function एकटी काही करत नाही. कोणीतरी call करावं लागतं. हा chapter सामान्य triggers जोडतो: S3 (image upload), EventBridge schedule (EC2 start/stop alarm chapter शी लिंक), SQS आणि SNS. Cold starts, timeouts, retries, layers आणि environment variables पण शिकू.

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

  • S3 event → Lambda image-resize pattern
  • EC2 start/stop साठी EventBridge schedule
  • SQS आणि SNS triggers
  • Cold starts, timeouts, retries
  • Layers आणि environment variables

1. गोष्ट: स्वतः resize होणारे photos

Meera च्या campus app मध्ये student photos S3 मध्ये. Full-size 5 MB. List ला 200 KB thumbnails. Folder बघणारा server नको. हवं: photo S3 मध्ये पडला → thumbnail तयार.

तो ObjectCreated वरचा S3 trigger, Lambda object वाचते, resize करते, thumbs/ prefix मध्ये लिहिते.

2. Trigger नकाशा

Triggerकेव्हा चालतोसामान्य उपयोग
Amazon S3Bucket मध्ये object create/removeImage resize, virus scan, ETL
Amazon EventBridge Scheduler / rulesCron किंवा rate, किंवा AWS event busNightly reports, EC2 start/stop
Amazon SQSQueue मध्ये messagesBurst नरम, backoff retries
Amazon SNSTopic वर publishLambda + email + SMS ला fan-out
API GatewayRoute वर HTTP requestPublic/private HTTP APIs
S3 upload ते thumbnailUser photo.jpgs3://pics/raw/ मध्ये PUTS3 ObjectCreatedevent काढतोLambda raw objectdownload करतेPillow/Sharp400 px resizeLambdas3://pics/thumbs/ PUT
Polling नाही. S3 स्वतः Lambda call करतो.

3. Cold starts, timeouts आणि retries

हे का लागतं?

Idle नंतर पहिली request slow असू शकते. Timeout सुटलेलं काम कापतो. Code safe नसेल तर retries double-write करू शकतात.

हे काय आहे?

  • Cold start: AWS नवीन environment बनवतो, package आणतो, runtime सुरू. मग handler. नंतर warm calls जलद.
  • मोठे packages आणि Java/.NET थंड सुरू होण्यास Python/Node पेक्षा slow. Provisioned concurrency environments warm ठेवते — पैसे लागतात.
  • Timeout: function setting, max 15 minutes. p99 duration पेक्षा वर ठेवा नाहीतर काम मध्ये मरतं.
  • Retries: async (S3, SNS, EventBridge) default दोनदा retry. SQS redrive policy. Handlers idempotent ठेवा.

4. Layers आणि environment variables

हे काय आहे?

Layer म्हणजे अनेक functions ला जोडायचा libraries चा zip (5 पर्यंत). उदा. तीन image functions साठी Pillow layer. Function zip छोटा ठेवा.

Environment variables मध्ये config (bucket names, log level). Max 4 KB. Passwords नको — Secrets Manager किंवा SSM.

5. Lab A: S3 → Lambda (फक्त notify)

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

पूर्ण Pillow resize ला layer लागतो; हा lab log line ने trigger सिद्ध करतो. Region ap-south-1.

  1. Bucket yourname-lam-pics बनवा, Block Public Access on.
  2. Lambda s3-notify-lab, Python 3.12, basic execution role.
  3. Code:
def lambda_handler(event, context):
    for r in event.get("Records", []):
        b = r["s3"]["bucket"]["name"]
        k = r["s3"]["object"]["key"]
        print(f"uploaded s3://{b}/{k}")
    return {"ok": True}
  1. Deploy. Configuration → Permissions → role → AmazonS3ReadOnlyAccess (फक्त lab). का: download labs ना s3:GetObject.
  2. Lambda → Add trigger → S3 → bucket → All object create events → Suffix .jpg → Add. Recursive warning मान्य करा (त्याच prefix वर परत लिहू नका).
  3. Upload: aws s3 cp cat.jpg s3://yourname-lam-pics/raw/cat.jpg.
  4. CloudWatch logs मध्ये एका मिनिटात uploaded s3://... दिसावं.

6. Lab B: EventBridge schedule → Lambda

CloudWatch EC2 alarm chapter मध्ये idle instances alarm ने थांबवले. Office hours साठी schedule स्वच्छ. हा lab फक्त print करतो; तयार असाल तेव्हा StartInstances/StopInstances जोडा.

  1. Lambda ec2-schedule-echo बनवा जी event print करून ok देते.
  2. EventBridge → Schedules → Create. Name office-open-echo. Cron 0 9 * * ? *. Time zone Asia/Calcutta. का: India 9 AM.
  3. Target: AWS Lambda Invoke → ec2-schedule-echo → Create.
  4. चटकन test साठी rate(5 minutes), logs बघा, मग परत cron किंवा delete.

7. SQS आणि SNS एका मिनिटात

  • SQS trigger: Lambda queue poll करते (event source mapping). Bursty producers, retry + DLQ.
  • SNS trigger: एकदा publish, अनेक subscribers. Alarms आणि fan-out.
  • Permission: trigger function वर resource-based policy टाकतो जेणेकरून service invoke करेल.

Cleanup

  1. Schedules delete, S3 trigger काढा, functions delete, bucket रिकामी करून delete.
  2. अतिरिक्त IAM policies detach; न वापरलेले roles delete.

8. Interview questions

प्र. चार Lambda triggers सांगा.

S3, EventBridge, SQS, SNS (शिवाय API Gateway, DynamoDB Streams, ALB…).

प्र. Cold start म्हणजे?

नव्या environment वरील पहिली invoke: package, runtime, मग handler. Warm पेक्षा slow.

प्र. Idempotency का महत्त्वाची?

Async retries एकच event दोनदा देऊ शकतात. Safe handlers duplicate rows/charges करत नाहीत.

प्र. S3 trigger recursive risk?

Lambda त्याच prefix वर लिहित असेल तर loop. दुसऱ्या prefix/bucket वर लिहा.

प्र. Layer vs function zip मध्ये deps?

Layer = shared, छोटी zips. Function zip = सोपं, पण duplicate.

घरी करून बघा

  1. दुसरी schedule 21:00 Asia/Calcutta ला "office closed" log करणारी.
  2. SNS topic बनवा, Lambda subscribe, publish, log Confirm करा.

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

  1. Triggers Lambda सुरू करतात; S3, EventBridge, SQS, SNS रोजचे.
  2. Cold start = नवीन environment; दोन्हीसाठी design.
  3. Timeouts आणि retries ला idempotent code.
  4. Layers libs share; env vars non-secret config.

सराव Tasks

या scenario बद्दल

Dublin Fitness Club हा डब्लिन मधला फिटनेस व्यवसाय आहे. Siobhan Murphy त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे EUR मध्ये मोजले जातात आणि AWS resources eu-west-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 12

सोपं Functions ची list

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

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

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

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

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

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

मध्यम Producer फक्त send करू शकतो

का: Web app ने jobs टाकावे पण वाचू/delete करू नये.

काय करायचं: फक्त arn:aws:sqs:eu-west-1:132788974236:dublinfit-orders वर sqs:SendMessage allow करा.

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

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

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

काय करायचं: Queue arn:aws:sqs:eu-west-1:132788974236:dublinfit-orders पासून dublinfit-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 दाबा.

अवघड Lambda function बनवा

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

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

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

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

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

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

काय करायचं: dublinfit-orders-fn ला s3invoke permission statement द्या: s3.amazonaws.com ने bucket arn:aws:s3:::dublinfit-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: S3 ObjectCreated trigger. Manual thumbnail jobs uploads चुकवतात. Events झोपत नाहीत. S3 ObjectCreated वर prefix/suffix साठी Lambda invoke करू शकतं. Add trigger → S3 → bucket → event → prefix images/ suffix .jpg. hero.jpg upload → thumbs/hero.jpg.
उजळणी card: S3 ObjectCreated trigger · PNG download करा · Card page उघडा
उजळणी card: EventBridge schedules. एका EC2 वरील cron instance सोबत मरतो. Cloud schedules राहतात. EventBridge Scheduler/rules cron किंवा rate ने Lambda invoke. Schedule → cron 0 21 * * ? * Asia/Calcutta → Lambda target. रात्री 9 IST ला stop-dev Lambda.
उजळणी card: EventBridge schedules · PNG download करा · Card page उघडा
उजळणी card: Lambda सोबत SQS आणि SNS. Bursty producers ना buffer. अनेक listeners ना fan-out. SQS = queue. SNS = अनेक subscribers, Lambda सहित. SQS साठी event source mapping. SNS subscription = Lambda. Order SNS → Lambda email + Lambda analytics दोन्ही.
उजळणी card: Lambda सोबत SQS आणि SNS · PNG download करा · Card page उघडा
उजळणी card: Cold starts, layers, retries. Idle नंतर पहिला invoke slow. Shared libs प्रत्येक zip मोठं करतात. Cold start = नवीन env. Layers = shared libs. Async failure वर retry. Package छोटी; heavy deps layer मध्ये; handlers idempotent. S3 trigger दोनदा fail → DLQ (जर configure).
उजळणी card: Cold starts, layers, retries · PNG download करा · Card page उघडा
तुलना: Synchronous invoke vs Asynchronous invoke. Synchronous invoke: Caller response ची वाट पाहतो. Asynchronous invoke: Event queue; Lambda नंतर चालते.
तुलना: Synchronous invoke vs Asynchronous invoke · PNG download करा · Card page उघडा
तुलना: Amazon SQS vs Amazon SNS. Amazon SQS: Queue: consumers साठी buffer. Amazon SNS: Topic: एक message अनेक जणांना.
तुलना: Amazon SQS vs Amazon SNS · PNG download करा · Card page उघडा
मुलाखत card: ऐकत असलेल्या त्याच S3 prefix वर write का टाळायचं?. तुमची write पुन्हा ObjectCreated → recursion. Bill आणि throttling स्फोट; trigger थांबवावा लागतो. images/ वाचा; thumbs/ किंवा दुसऱ्या bucket वर लिहा.
मुलाखत card: ऐकत असलेल्या त्याच S3 prefix वर write का टाळायचं? · PNG download करा · Card page उघडा
मुलाखत card: Cold start म्हणजे काय?. नव्या env वर पहिला invoke — runtime + package load. नंतरचे warm invokes env reuse — जलद. Deps कमी; provisioned concurrency फक्त SLA साठी.
मुलाखत card: Cold start म्हणजे काय? · PNG download करा · Card page उघडा
मुलाखत card: Lambda साठी SQS vs SNS — कधी कोणतं?. SQS buffer+retry. SNS एक message अनेक जणांना. Backlog process → SQS. Notify-many → SNS. Checkout → SQS → worker. Order → SNS → email + stock.
मुलाखत card: Lambda साठी SQS vs SNS — कधी कोणतं? · PNG download करा · Card page उघडा
मुलाखत card: Async handlers idempotent का हवेत?. Retries एकच event पुन्हा देऊ शकतात. तोच काम पुन्हा लागू करणं सुरक्षित हवं. event id ने key; आधी process झालं तर skip.
मुलाखत card: Async handlers idempotent का हवेत? · PNG download करा · Card page उघडा

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