AWS सेवाओं के साथ Lambda का इंटीग्रेशन

AWS Lambda के साथ Serverless Applications

Claudio Canales

Senior DevOps Engineer

इंटीग्रेशन लूप

  • Event इन.
  • Handler लॉजिक.
  • SDK कॉल.

इवेंट -> हैंडलर -> SDK लूप

AWS Lambda के साथ Serverless Applications

ट्रिगर्स बनाम SDK कॉल्स

Trigger

  • तय करता है Lambda कब चलेगा.

SDK कॉल (हैंडलर के अंदर)

  • DynamoDB और S3 जैसी सेवाएँ पढ़ता/लिखता है.

ट्रिगर बनाम SDK कॉल

AWS Lambda के साथ Serverless Applications

एक ठोस उदाहरण

  • एक फ़ाइल S3 में आती है.
  • Lambda चलता है.
  • DynamoDB में एक छोटा रिकॉर्ड सेव करें.

S3 अपलोड -> Lambda -> DynamoDB

AWS Lambda के साथ Serverless Applications

इवेंट पेलोड: ज़रूरी चीज़ें खोजें

{
  "Records": [{
    "s3": {
      "bucket": {"name": "…"},
      "object": {"key": "…"}
    }
  }]
}

S3 इवेंट पेलोड कॉलआउट्स

AWS Lambda के साथ Serverless Applications

AWS SDK कहाँ फिट होता है

  • आपका कोड SDK (boto3) कॉल करता है.
  • SDK, AWS APIs कॉल करता है.
  • IAM गेटकीपर है.

हैंडलर -> SDK -> AWS API

AWS Lambda के साथ Serverless Applications

Execution role = credentials

  • Execution role से अस्थायी credentials.
  • कोड में access keys नहीं.
  • रोल API नहीं बुला सकता तो SDK कॉल फेल होगा.

Execution role credentials देता है

AWS Lambda के साथ Serverless Applications

लीस्ट प्रिविलेज: actions + resources सीमित रखें

  • ब्लास्ट रेडियस घटता है.
  • केवल ज़रूरी actions और resources दें.
  • सच में ज़रूरत न हो तो wildcards से बचें.

लीस्ट प्रिविलेज: actions और resources

AWS Lambda के साथ Serverless Applications

DynamoDB: सही ऑपरेशन चुनें

  • PutItem लिखता है.
  • GetItem key से पढ़ता है.
  • Query संबंधित items ढूँढता है.
  • वाइड scans की जगह targeted operations रखें.

DynamoDB ऑपरेशंस

AWS Lambda के साथ Serverless Applications

S3: bucket + key के साथ काम करें

  • Objects, bucket + key पर रहते हैं.
  • GetObject कंटेंट लाता है.
  • PutObject नया derived फ़ाइल लिखता है.

S3 बकेट और key

AWS Lambda के साथ Serverless Applications

कॉन्फ़िगरेशन को environment variables में रखें

  • Resource नाम hardcode करना नाज़ुक है.
  • Environment variables इस्तेमाल करें.
  • वही कोड dev और prod में डिप्लॉय करें.

Env var कॉन्फ़िगरेशन

AWS Lambda के साथ Serverless Applications

SDK कोड: छोटा रखें और टेस्ट करें

import boto3
ddb = boto3.client("dynamodb")
def handler(event, context):
    ddb.put_item(
        TableName="files",
        Item={"pk": {"S": "1"}},
    )
  • इनपुट validate करें, SDK कॉल करें, रिटर्न करें.
  • प्योर लॉजिक के unit tests लिखें.

छोटा हैंडलर और SDK कॉल

AWS Lambda के साथ Serverless Applications

SDK errors को सोच-समझकर संभालें

  • शुरुआत में permission errors आम हैं.
  • कॉल फेल हो तो कारण साफ़ दिखाएँ.
  • अच्छे logs डिबगिंग को सुरक्षित बनाते हैं.

सफलता और विफलता पथ

AWS Lambda के साथ Serverless Applications

जब IAM गलत हो, कोड ठीक लगता है

AccessDeniedException
required action denied
  • पहले IAM ठीक करें, फिर हैंडलर लॉजिक.

एक्सेस डिनाइड

AWS Lambda के साथ Serverless Applications

Idempotency: सुरक्षित retries और duplicates

  • वही इवेंट दो बार दिख सकता है.
  • Idempotency keys, डबल प्रोसेसिंग रोकते हैं.
  • Conditional writes, रिपीट्स को सुरक्षित रखते हैं.

आइडेम्पोटेंसी की पैटर्न

AWS Lambda के साथ Serverless Applications

सबको जोड़ना (एंड-टू-एंड)

  • S3 इवेंट bucket और key लाता है.
  • हैंडलर इन्हें पार्स करता है.
  • PutItem मेटाडेटा DynamoDB में लिखता है.
  • CloudWatch Logs बताता है क्या हुआ.

एंड-टू-एंड इंटीग्रेशन सारांश

AWS Lambda के साथ Serverless Applications

मुख्य बातें

  • ट्रिगर्स को SDK कॉल्स से अलग रखें.
  • Execution role से permissions टाइट रखें.
  • Env vars से कॉन्फ़िगरेशन पोर्टेबल बनाएं.

इंटीग्रेशन मुख्य बातें

AWS Lambda के साथ Serverless Applications

अभ्यास करते हैं!

AWS Lambda के साथ Serverless Applications

Preparing Video For Download...