परिचय: सर्वरलेस और C# — आदर्श जोड़ी क्यों है
\nसर्वरलेस आर्किटेक्चर (या बिना सर्वर के कंप्यूटिंग) एक मॉडल है जिसमें आप सर्वर प्रबंधन की चिंता किए बिना कोड लिखते हैं। AWS Lambda ऐसे कोड को चलाने के लिए सबसे लोकप्रिय सेवाओं में से एक है। C# (.NET) के साथ मिलकर, आपको माइक्रोसर्विसेज, API हैंडलर और बैकग्राउंड टास्क बनाने के लिए एक शक्तिशाली, टाइप-सेफ और उच्च-प्रदर्शन वाला टूल मिलता है।
\nइस लेख में, हम पूरी प्रक्रिया को कवर करेंगे: एनवायरनमेंट सेटअप से लेकर AWS Lambda में पहले C# फ़ंक्शन के डिप्लॉय और मॉनिटरिंग तक। यह सामग्री शुरुआती और अनुभवी डेवलपर्स दोनों के लिए उपयुक्त है जो अपने ज्ञान को व्यवस्थित करना चाहते हैं।
\n\n1. एनवायरनमेंट तैयार करना और प्रोजेक्ट बनाना
\n1.1 टूल्स इंस्टॉल करना
\nC# और AWS Lambda के साथ काम करने के लिए आपको आवश्यकता होगी:
\n- \n
- .NET SDK (8.0 या 6.0) — dotnet.microsoft.com से डाउनलोड करें; \n
- AWS CLI — टर्मिनल से संसाधनों को प्रबंधित करने के लिए; \n
- Amazon.Lambda.Tools — डिप्लॉय के लिए .NET ग्लोबल टूल। \n
Lambda Tools को एक कमांड से इंस्टॉल करें:
\ndotnet tool install -g Amazon.Lambda.Tools\n\n1.2 फ़ंक्शन टेम्पलेट बनाना
\nत्वरित शुरुआत के लिए बिल्ट-इन टेम्पलेट का उपयोग करें:
\ndotnet new lambda.EmptyFunction --name MyFirstLambda --profile default --region us-east-1\nयह कमांड Function.cs फ़ाइल और डिप्लॉय सेटिंग्स के लिए aws-lambda-tools-defaults.json के साथ एक प्रोजेक्ट बनाएगा।
2. C# में सर्वरलेस फ़ंक्शन का कोड लिखना
\n2.1 Lambda फ़ंक्शन की बुनियादी संरचना
\nप्रत्येक Lambda फ़ंक्शन एक मेथड है जो एक इवेंट ऑब्जेक्ट और एक्ज़ीक्यूशन कॉन्टेक्स्ट लेता है। आइए एक सरल उदाहरण देखें:
\nusing Amazon.Lambda.Core;\nusing Amazon.Lambda.SQSEvents;\n\n[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]\n\npublic class Function\n{\n public async Task<string> FunctionHandler(SQSEvent evnt, ILambdaContext context)\n {\n context.Logger.LogInformation("प्राप्त संदेश: " + evnt.Records.Count);\n \n foreach (var record in evnt.Records)\n {\n await ProcessMessageAsync(record.Body, context);\n }\n \n return "संसाधित " + evnt.Records.Count + " संदेश";\n }\n\n private async Task ProcessMessageAsync(string messageBody, ILambdaContext context)\n {\n context.Logger.LogInformation("प्रसंस्करण: " + messageBody);\n await Task.Delay(100); // कार्य का अनुकरण\n }\n}\nLambdaSerializer एट्रीब्यूट पर ध्यान दें — यह बताता है कि JSON को कैसे सीरियलाइज़/डीसीरियलाइज़ करना है। C# के लिए SystemTextJson अनुशंसित है।
2.2 विभिन्न ट्रिगर्स के साथ काम करना
\nAWS Lambda कई इवेंट स्रोतों का समर्थन करता है। यहाँ API Gateway के माध्यम से HTTP अनुरोध का एक उदाहरण है:
\npublic async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)\n{\n var name = request.QueryStringParameters?.ContainsKey("name") == true \n ? request.QueryStringParameters["name"] \n : "दुनिया";\n \n var responseBody = $"नमस्ते, {name}!";\n \n return new APIGatewayProxyResponse\n {\n StatusCode = 200,\n Body = responseBody,\n Headers = new Dictionary<string, string> { { "Content-Type", "text/plain" } }\n };\n}\nHTTP के साथ काम करने के लिए Amazon.Lambda.APIGatewayEvents पैकेज इंस्टॉल करना होगा।
3. फ़ंक्शन का डिप्लॉय और परीक्षण
\n3.1 स्थानीय परीक्षण
\nडिप्लॉय से पहले dotnet lambda invoke का उपयोग करके कोड को स्थानीय रूप से जांचें:
dotnet lambda invoke --payload "{\\"Records\