Lambda functions को कॉन्फ़िगर करना

AWS Lambda के साथ Serverless Applications

Claudio Canales

Senior DevOps Engineer

क्यों कॉन्फ़िगरेशन मायने रखता है

  • एक ही कोड अलग सेटिंग्स में बहुत अलग तरह से चलता है।
  • कॉन्फ़िगरेशन प्रदर्शन, लागत, और सुरक्षा नियंत्रित करता है।
  • लक्ष्य: dev और prod में पूर्वानुमेय व्यवहार।

एक ही कोड, अलग सेटिंग्स

AWS Lambda के साथ Serverless Applications

Code बनाम configuration

Code package

  • Code package
  • हैंडलर लॉजिक + dependencies.
  • बदलाव के लिए deploy जरूरी है।

Function configuration

  • Function configuration
  • Memory, timeout, environment variables.
  • Execution role + layers.
AWS Lambda के साथ Serverless Applications

आप किन knobs को नियंत्रित करते हैं

  • Runtime + handler: कौन-सा कोड Lambda चलाएगा।
  • Memory + timeout: प्रदर्शन, लागत, सुरक्षा।
  • Environment variables: बिना hardcoding के कॉन्फ़िगरेशन।
  • Execution role: AWS APIs की permissions।
  • Layers: कई functions में shared dependencies।

Lambda configuration knobs

AWS Lambda के साथ Serverless Applications

Runtime और handler की बुनियाद

  • Runtime = language environment (उदाहरण, Python).
  • Handler = entry point जिसे Lambda कॉल करता है।
  • Handler फॉर्मेट: file.function.
  • उदाहरण: lambda_function.lambda_handler.

Handler string breakdown

AWS Lambda के साथ Serverless Applications

Handler string: क्या गलत हो सकता है

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

इम्पोर्ट, फिर handler कॉल

AWS Lambda के साथ Serverless Applications

Execution role (IAM)

  • IAM = Identity and Access Management (permissions).
  • Execution role तय करता है आपकी function क्या कर सकती है।
  • यह नियंत्रित करता है कि आपका कोड कौन-से AWS APIs कॉल कर सकता है।

Execution role एक keycard की तरह

AWS Lambda के साथ Serverless Applications

Lambda layer क्या है?

  • Layer एक ZIP है जिसे आप function से जोड़ते हैं।
  • Lambda runtime पर layer फाइलें /opt के तहत उपलब्ध कराता है।
  • Shared libraries और common utilities के लिए layers का उपयोग करें।
  • Layer एक बार अपडेट करें; कई functions इसे reuse कर सकते हैं।

/opt के तहत mounted layer

AWS Lambda के साथ Serverless Applications

Runtime पर layers कहाँ दिखते हैं

  • आपका function कोड /var/task के तहत mounted होता है।
  • जुड़े हुए layers /opt के तहत mounted होते हैं।
  • Lambda /tmp पर एक अस्थायी फ़ोल्डर भी देता है।

Runtime फ़ोल्डर: /var/task, /opt, /tmp

AWS Lambda के साथ Serverless Applications

Memory CPU को भी प्रभावित करती है

  • अधिक memory -> अधिक CPU।
  • CPU-bound tasks का runtime कम हो सकता है।
  • कुल लागत duration और memory दोनों पर निर्भर है।

Memory से CPU बढ़ता है

AWS Lambda के साथ Serverless Applications

माप के साथ memory ट्यून करें

  • एक उचित default से शुरू करें (उदाहरण, 256 MB).
  • वास्तविक events से टेस्ट करें।
  • अलग memory साइज पर duration और cost तुलना करें।

Memory sweep: duration और cost मापें

AWS Lambda के साथ Serverless Applications

Timeouts और सुरक्षित execution

  • Timeout अनियंत्रित executions रोकता है।
  • लंबे काम से पहले शेष समय जाँचें।
  • जहाँ उचित हो, जल्दी fail करें और retry करें।

सुरक्षा टाइमर के रूप में timeout

AWS Lambda के साथ Serverless Applications

Walkthrough: शेष समय जाँचना

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Context काउंटडाउन गार्ड

AWS Lambda के साथ Serverless Applications

Environment variables

  • कॉन्फ़िगरेशन को कोड से बाहर रखें।
  • dev/test/prod सेटिंग्स अलग रखें।
  • संवेदनशील मानों के लिए Secrets Manager उपयोग करें।

Environment variables व्यवहार कॉन्फ़िगर करते हैं

AWS Lambda के साथ Serverless Applications

Walkthrough: environment variables पढ़ना

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Defaults local tests को सुरक्षित बनाते हैं

  • Environment variables एक्सेस करने के लिए os इम्पोर्ट करें।
  • os.getenv वैल्यू या default लौटाता है।
AWS Lambda के साथ Serverless Applications

कॉमन कॉन्फ़िगरेशन pitfalls

  • Stage मानों को कोड में hard-code करना।
  • Timeout बहुत कम या IAM permissions गायब।
  • Secrets को plain environment variables में रखना।

Pitfalls और thumb rules

AWS Lambda के साथ Serverless Applications

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

AWS Lambda के साथ Serverless Applications

Preparing Video For Download...