Go पर सर्वरलेस फ़ंक्शन: AWS Lambda A से Z तक — पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Go पर सर्वरलेस फ़ंक्शन: AWS Lambda A से Z तक

\n\n

सर्वरलेस आर्किटेक्चर क्लाउड में स्केलेबल और किफायती एप्लिकेशन बनाने के लिए डी-फैक्टो मानक बन गया है। AWS Lambda सर्वर प्रबंधन के बिना कोड निष्पादित करने के लिए सबसे लोकप्रिय सेवाओं में से एक है। इस लेख में, हम AWS Lambda में Go (Golang) पर सर्वरलेस फ़ंक्शन बनाने, कॉन्फ़िगर करने और डिप्लॉय करने के तरीके पर चर्चा करेंगे, बुनियादी बातों से लेकर उन्नत तकनीकों तक।

\n\n

Go AWS Lambda के लिए क्यों?

\n\n

Go सर्वरलेस फ़ंक्शन के लिए एक आदर्श भाषा है। यह एक बाइनरी फ़ाइल में कंपाइल होता है, इसमें न्यूनतम कोल्ड स्टार्ट समय (अक्सर 100 ms से कम) और कम मेमोरी खपत होती है। यह इसे Lambda के लिए सबसे तेज़ और सस्ते विकल्पों में से एक बनाता है।

\n\n
    \n
  • त्वरित प्रारंभ: कंपाइल की गई बाइनरी तुरंत चलती है।
  • \n
  • कम लागत: न्यूनतम संसाधन खपत क्लाउड बिल को कम करती है।
  • \n
  • सरल डिप्लॉयमेंट: एक फ़ाइल — सर्वर साइड पर कोई निर्भरता नहीं।
  • \n
  • उत्कृष्ट एकीकरण: Go के लिए AWS SDK का मूल समर्थन।
  • \n
\n\n

पर्यावरण सेटअप और पहला हैंडलर

\n\n

कोड लिखने से पहले, सुनिश्चित करें कि आपके पास इंस्टॉल हैं:

\n
    \n
  • Go संस्करण 1.19+
  • \n
  • AWS CLI उपयोगिता (एक्सेस कुंजियों के साथ कॉन्फ़िगर की गई)
  • \n
  • Make या कोई भी बिल्ड सिस्टम (वैकल्पिक)
  • \n
\n\n

एक नया मॉड्यूल बनाएं और Lambda के लिए आधिकारिक पैकेज इंस्टॉल करें:

\n\n
mkdir my-lambda-function\ncd my-lambda-function\ngo mod init my-lambda-function\ngo get github.com/aws/aws-lambda-go/lambda
\n\n

अब एक सरल फ़ंक्शन लिखते हैं जो अभिवादन लौटाता है:

\n\n
package main\n\nimport (\n    "context"\n    "github.com/aws/aws-lambda-go/lambda"\n)\n\ntype MyEvent struct {\n    Name string `json:"name"`\n}\n\ntype MyResponse struct {\n    Message string `json:"message"`\n}\n\nfunc HandleRequest(ctx context.Context, event MyEvent) (MyResponse, error) {\n    if event.Name == "" {\n        event.Name = "अतिथि"\n    }\n    return MyResponse{Message: "नमस्ते, " + event.Name + "!"}, nil\n}\n\nfunc main() {\n    lambda.Start(HandleRequest)\n}
\n\n

यह कोड name फ़ील्ड वाला JSON स्वीकार करता है और एक व्यक्तिगत अभिवादन लौटाता है। ध्यान दें: फ़ंक्शन एक्सपोर्टेबल होना चाहिए (बड़े अक्षर से शुरू), और सिग्नेचर रनटाइम की अपेक्षाओं के अनुरूप होना चाहिए।

\n\n

AWS Lambda पर बिल्ड और डिप्लॉयमेंट

\n\n

Linux-संगत बाइनरी के लिए (Lambda को यही चाहिए), क्रॉस-कंपाइलेशन का उपयोग करें:

\n\n
GOOS=linux GOARCH=amd64 go build -o bootstrap main.go\nzip function.zip bootstrap
\n\n

आउटपुट फ़ाइल का नाम अनिवार्य रूप से bootstrap होना चाहिए — यह AWS Lambda पर Go रनटाइम की आवश्यकता है।

\n\n

अब AWS CLI के माध्यम से फ़ंक्शन बनाएं:

\n\n
aws lambda create-function \\\n    --function-name my-go-function \\\n    --runtime provided.al2023 \\\n    --role arn:aws:iam::123456789012:role/lambda-execution-role \\\n    --handler bootstrap \\\n    --zip-file fileb://function.zip
\n\n

--runtime provided.al2023 पर ध्यान दें — यह Go के लिए विशेष रनटाइम है (Amazon Linux 2023 पर आधारित)। यदि आपके पास पुराना संस्करण है, तो provided.al2 का उपयोग करें।

\n\n

बनाने के बाद फ़ंक्शन का परीक्षण करें:

\n\n
aws lambda invoke --function-name my-go-function \\\n    --payload '{"name": "दुनिया"}' output.json\ncat output.json
\n\n

आपको देखना चाहिए: {"message":"नमस्ते, दुनिया!"}

\n\n

AWS इवेंट्स के साथ काम करना (S3, DynamoDB, API Gateway)

\n\n

Lambda की असली ताकत अन्य AWS सेवाओं के साथ एकीकरण में है। S3 से इवेंट के लिए हैंडलर का उदाहरण देखें:

\n\n
package main\n\nimport (\n    "context"\n    "fmt"\n    "github.com/aws/aws-lambda-go/events"\n    "github.com/aws/aws-lambda-go/lambda"\n)\n\nfunc HandleS3Event(ctx context.Context, s3Event even                

ब्लॉग

पुस्तक अनुशंसाएँ