AWS लाम्बा - C # में कार्य
यह अध्याय आपको विस्तार से बताएगा कि CWS में AWS लैम्ब्डा फ़ंक्शन के साथ कैसे काम करें। यहां, हम AWS लाम्बा को कोड लिखने और तैनात करने के लिए विज़ुअल स्टूडियो का उपयोग करने जा रहे हैं। किसी भी जानकारी के लिए और विजुअल स्टूडियो की स्थापना और विज़ुअल स्टूडियो में AWS टूलकिट को जोड़ने में मदद के लिए, कृपया देखेंIntroductionइस ट्यूटोरियल में अध्याय। एक बार जब आप विजुअल स्टूडियो की स्थापना के साथ हो जाते हैं, तो कृपया नीचे दिए गए चरणों का पालन करें। बेहतर समझ के लिए संबंधित स्क्रीनशॉट देखें -
चरण 1
अपना विज़ुअल स्टूडियो खोलें और नई परियोजना बनाने के लिए चरणों का पालन करें। पर क्लिक करेंFile -> New -> Project।
चरण 2
अब, निम्न स्क्रीन प्रदर्शित होती है, जिसमें आप चयन करते हैं AWS Lambda for Visual C#। चुनते हैंAWS Lambda Project (.NET Core)।
यदि आवश्यक हो तो आप नाम बदल सकते हैं, यहां डिफ़ॉल्ट नाम रखेंगे। क्लिकOK जारी रखने के लिए।
अगला चरण आपको एक का चयन करने के लिए कहेगा Blueprint।
चुनते हैं Empty function इस उदाहरण के लिए और क्लिक करें Finish। यह एक नई परियोजना संरचना बनाएगा जैसा कि नीचे दिखाया गया है -
अब, चयन करें Function.cs जो मुख्य फ़ाइल है, जहां घटना और संदर्भ वाला हैंडलर AWS लैम्ब्डा के लिए बनाया गया है।
फ़ाइल का प्रदर्शन प्रकार। इस प्रकार है -
आप नीचे दिए गए कमांड का उपयोग इनपुट और आउटपुट मापदंडों को एडब्ल्यूएस लाम्बा फ़ंक्शन में अनुक्रमित करने के लिए कर सकते हैं।
[assembly:
LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
सी # के लिए हैंडलर विवरण
हैंडलर निम्नानुसार प्रदर्शित किया जाता है -
public string FunctionHandler(string input, ILambdaContext context) {
return input?.ToUpper();
}
उपरोक्त कोड के विभिन्न घटकों को नीचे समझाया गया है -
FunctionHandler −यह C # AWS लैम्बडा फ़ंक्शन का प्रारंभिक बिंदु है।
String input − हैंडलर के मापदंडों string input सभी इवेंट डेटा जैसे S3 ऑब्जेक्ट, API गेटवे विवरण आदि।
ILambdaContext context −ILamdaContext एक इंटरफ़ेस है जिसमें संदर्भ विवरण है। इसमें लैम्बडा फंक्शन नाम, मेमोरी विवरण, टाइमआउट विवरण आदि जैसे विवरण हैं।
लैम्ब्डा हैंडलर को सिंक और एसिंक्स तरीके से मंगाया जा सकता है। यदि आपके द्वारा दिखाए गए सिंक तरीके से आह्वान किया गया है तो आपके पास रिटर्न प्रकार हो सकता है। यदि रिटर्न प्रकार की तुलना में एसिंक्स शून्य है।
अब, हम AWS लैम्ब्डा C # को तैनात करते हैं और उसी का परीक्षण करते हैं। प्रोजेक्ट पर राइट क्लिक करें और क्लिक करेंPublish to AWS Lambda जैसा कि नीचे दिखाया गया है -
भर दो Function Name और पर क्लिक करें Next। प्रदर्शित अगली स्क्रीन हैAdvanced Function Details जैसा कि दिखाया गया है -
प्रवेश करें Role Name, Memory तथा Timeout। विवरण करें कि यहां हमने मौजूदा भूमिका का चयन किया है और मेमोरी का उपयोग 128 एमबी और टाइमआउट 10 सेकंड के रूप में किया है। एक बार क्लिक करेंUpload AWS लाम्बा कंसोल को प्रकाशित करने के लिए।
एक बार एडब्ल्यूएस लैंबडा फ़ंक्शन अपलोड होने के बाद आप निम्न स्क्रीन देख सकते हैं। क्लिकInvokeAWS लैम्ब्डा फ़ंक्शन को निष्पादित करने के लिए। वर्तमान में, यह त्रुटि दिखाता है क्योंकि इसमें लिखे गए कोड के अनुसार कुछ इनपुट की आवश्यकता होती है।
अब, हम कुछ सैंपल इनपुट दर्ज करते हैं और Invokeयह फिर से। ध्यान दें कि यहां हमने इनपुट बॉक्स में कुछ पाठ दर्ज किए हैं और क्लिक करने पर समान हैinvokeप्रतिक्रिया अनुभाग में अपरकेस में प्रदर्शित किया जाता है। लॉग आउटपुट नीचे प्रदर्शित किया जाता है -
अब, यह देखने के लिए कि क्या हमने फ़ंक्शन को Visual Studio से फ़ंक्शन के रूप में बनाया है, यह देखने के लिए AWS कंसोल भी देखें।
ऊपर बना लैम्ब्डा फ़ंक्शन है aws lambda using csharp और AWS कंसोल में प्रदर्शित किया गया है जैसा कि नीचे दिए गए स्क्रीनशॉट में दिखाया गया है -
हैंडलर हस्ताक्षर
एडब्ल्यूएस को निष्पादित करने के लिए हैंडलर प्रारंभ बिंदु है। हैंडलर के नाम को इस प्रकार परिभाषित किया जाना चाहिए -
ASSEMBLY::TYPE::METHOD
हस्ताक्षर का विवरण नीचे दिया गया है -
ASSEMBLY- बनाए गए एप्लिकेशन के लिए यह .NET असेंबली का नाम है। यह मूल रूप से उस फ़ोल्डर का नाम है जहां से प्रोजेक्ट बनाया गया है।
TYPE- यह हैंडलर का नाम है। यह मूल रूप से namepace.classname है।
METHOD - यह फंक्शन हैंडलर का नाम है।
हैंडलर हस्ताक्षर के लिए कोड नीचे दिखाया गया है -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace AWSLambda3 {
public class Function {
/// <summary>
/// A simple function that takes a string and does a ToUpper
/// </summary>
/// <param name="input"></param>
/// <param name="context"></param>
/// <returns></returns>
public string FunctionHandler(string input, ILambdaContext context) {
return input?.ToUpper();
}
}
}
ध्यान दें कि यहां विधानसभा है AWSLamda3, टाइप का नाम है namepace.classname जो है AWSLambda3.Function और विधि है FunctionHandler। इस प्रकार, हैंडलर हस्ताक्षर हैAWSLamda3::AWSLambda3.Function::FunctionHandler
C # में संदर्भ वस्तु
संदर्भ ऑब्जेक्ट AWS वातावरण में रनटाइम के बारे में उपयोगी जानकारी देता है। संदर्भ ऑब्जेक्ट में उपलब्ध गुण निम्न तालिका में दिखाए गए हैं -
अनु क्रमांक | गुण और विवरण |
---|---|
1 | MemoryLimitInMB यह AWS लैम्ब्डा फ़ंक्शन के लिए कॉन्फ़िगर की गई मेमोरी का विवरण देगा |
2 | FunctionName AWS लाम्बा समारोह का नाम |
3 | FunctionVersion एडब्ल्यूएस लाम्बा फ़ंक्शन का संस्करण |
4 | InvokedFunctionArn ARN इस फ़ंक्शन का उपयोग करता था। |
5 | AwsRequestId AWS फ़ंक्शन के लिए AWS अनुरोध आईडी बनाई गई |
6 | LogStreamName क्लाउडवॉच लॉग स्ट्रीम नाम |
7 | LogGroupName क्लाउडवॉच समूह का नाम |
8 | ClientContext AWS मोबाइल एसडीके के साथ उपयोग किए जाने पर क्लाइंट एप्लिकेशन और डिवाइस के बारे में जानकारी |
9 | Identity AWS मोबाइल SDK के साथ प्रयोग करने पर amazon cogbnito पहचान के बारे में जानकारी |
10 | RemainingTime कार्य समाप्त होने तक निष्पादन समय शेष रहेगा |
1 1 | Logger लकड़हारा प्रसंग से जुड़ा |
उदाहरण
इस खंड में, हम CWS में AWS लैंबडा में उपरोक्त कुछ गुणों का परीक्षण करते हैं। नीचे दिए गए नमूना कोड का निरीक्षण करें -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace AWSLambda6 {
public class Function {
/// <summary>
/// </summary>
/// <param name="input"></param>
/// <param name="context"></param>
/// <returns></returns>
public void FunctionHandler(ILambdaContext context) {
LambdaLogger.Log("Function name: " + context.FunctionName+"\n");
context.Logger.Log("RemainingTime: " + context.RemainingTime+"\n");
LambdaLogger.Log("LogGroupName: " + context.LogGroupName+"\n");
}
}
}
संबंधित आउटपुट जिसे आप उपरोक्त कोड में आने पर देख सकते हैं C# नीचे दिखाया गया है -
संबंधित आउटपुट जिसे आप उपरोक्त कोड में आने पर देख सकते हैं AWS Console नीचे दिखाया गया है -
C # का उपयोग करके लॉगिंग
लॉगिंग के लिए, आप दो कार्यों का उपयोग कर सकते हैं -
context.Logger.Log
LambdaLogger.Log
यहाँ दिखाए गए निम्न उदाहरण पर गौर करें -
public void FunctionHandler(ILambdaContext context) {
LambdaLogger.Log("Function name: " + context.FunctionName+"\n");
context.Logger.Log("RemainingTime: " + context.RemainingTime+"\n");
LambdaLogger.Log("LogGroupName: " + context.LogGroupName+"\n");
}
ऊपर दिए गए कोड के लिए इसी आउटपुट को यहाँ दिखाया गया है -
आप नीचे दिखाए गए अनुसार CloudWatch से लॉग प्राप्त कर सकते हैं -
लैम्ब्डा फंक्शन के लिए C # में हैंडलिंग में त्रुटि
यह अनुभाग C # में त्रुटि से निपटने के बारे में चर्चा करता है। त्रुटि से निपटने के लिए,Exception कक्षा को विस्तारित किया जाना चाहिए जैसा कि नीचे दिखाए गए उदाहरण में दिखाया गया है -
उदाहरण
namespace example {
public class AccountAlreadyExistsException : Exception {
public AccountAlreadyExistsException(String message) :
base(message) {
}
}
}
namespace example {
public class Handler {
public static void CreateAccount() {
throw new AccountAlreadyExistsException("Error in AWS Lambda!");
}
}
}
ऊपर दिए गए कोड के लिए संबंधित आउटपुट नीचे दिया गया है -
{
"errorType": "LambdaException",
"errorMessage": "Error in AWS Lambda!"
}