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

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

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

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

Kotlin पर सर्वरलेस कंप्यूटिंग का परिचय

\n

सर्वरलेस आर्किटेक्चर स्केलेबल और किफायती एप्लिकेशन बनाने का मानक बन गया है। AWS Lambda सबसे लोकप्रिय सेवाओं में से एक है, जो सर्वर प्रबंधन के बिना कोड चलाने की अनुमति देता है। हालाँकि Lambda अक्सर Node.js या Python से जुड़ा होता है, Kotlin भाषा अपनी संक्षिप्तता, टाइप सुरक्षा और Java इकोसिस्टम के साथ पूर्ण संगतता के कारण सर्वरलेस फ़ंक्शन लिखने के लिए एक उत्कृष्ट विकल्प बन जाती है।

\n

इस लेख में, हम विस्तार से जानेंगे कि AWS Lambda के लिए Kotlin पर सर्वरलेस फ़ंक्शन कैसे बनाएं, परीक्षण करें और डिप्लॉय करें। आप सीखेंगे कि प्रोजेक्ट कैसे सेट करें, API Gateway, S3 और DynamoDB इवेंट को कैसे हैंडल करें, और प्रदर्शन को कैसे ऑप्टिमाइज़ करें।

\n\n

AWS Lambda के लिए Kotlin प्रोजेक्ट सेटअप

\n

शुरू करने के लिए, हमें सही डिपेंडेंसी के साथ एक Gradle प्रोजेक्ट की आवश्यकता होगी। Kotlin का मुख्य लाभ सभी Java लाइब्रेरीज़ का उपयोग करने की क्षमता है, जिसमें आधिकारिक AWS SDK शामिल है।

\n

Gradle प्रोजेक्ट बनाना

\n

निम्नलिखित कॉन्फ़िगरेशन के साथ एक build.gradle.kts फ़ाइल बनाएँ:

\n
plugins {\n    kotlin("jvm") version "1.9.22"\n    id("io.github.deweyjose.lambda-packager") version "0.1.2"\n}\n\ndependencies {\n    implementation("com.amazonaws:aws-lambda-java-core:1.2.3")\n    implementation("com.amazonaws:aws-lambda-java-events:3.11.4")\n    implementation("com.google.code.gson:gson:2.10.1")\n\n    testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")\n    testImplementation("org.mockito:mockito-core:5.11.0")\n}\n\ntasks.withType<Jar> {\n    duplicatesStrategy = DuplicatesStrategy.EXCLUDE\n    from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })\n}
\n

हैंडलर फ़ंक्शन की संरचना

\n

Kotlin पर किसी भी Lambda फ़ंक्शन को RequestHandler या RequestStreamHandler इंटरफ़ेस को लागू करना चाहिए। आइए एक सरल HelloHandler उदाहरण देखें:

\n
import com.amazonaws.services.lambda.runtime.Context\nimport com.amazonaws.services.lambda.runtime.RequestHandler\n\nclass HelloHandler : RequestHandler<Map<String, String>, String> {\n    override fun handleRequest(input: Map<String, String>, context: Context): String {\n        val name = input["name"] ?: "World"\n        return "Hello, $name! Kotlin Lambda से नमस्ते!"\n    }\n}
\n

ध्यान दें: Kotlin JSON इवेंट के साथ काम करने के लिए Map<String, String> का उपयोग करने की अनुमति देता है, लेकिन जटिल संरचनाओं के लिए Data Class बनाना बेहतर है।

\n\n

विभिन्न AWS ट्रिगर्स के साथ काम करना

\n

सर्वरलेस फ़ंक्शन शायद ही कभी अलगाव में काम करते हैं। आइए तीन लोकप्रिय परिदृश्यों पर विचार करें: API Gateway, S3 और DynamoDB।

\n

API Gateway + Kotlin पर Lambda

\n

HTTP अनुरोधों को संसाधित करने के लिए APIGatewayProxyRequestEvent क्लास का उपयोग करें:

\n
import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent\nimport com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent\n\nclass ApiHandler : RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent> {\n    override fun handleRequest(event: APIGatewayProxyRequestEvent, context: Context): APIGatewayProxyResponseEvent {\n        val body = """\n            {"message": "${event.httpMethod} अनुरोध ${event.path} पर प्राप्त हुआ",\n             "queryParams": "${event.queryStringParameters}"}\n        """.trimIndent()\n\n        return APIGatewayProxyResponseEvent()\n            .withStatusCode(200)\n            .withHeaders(mapOf("Content-Type" to "application/json"))\n            .withBody(body)\n    }\n}
\n

S3 इवेंट को संसाधित करना

\n

जब S3 बकेट में कोई नई ऑब्जेक्ट अपलोड होती है, तो Lambda स्वचालित रूप से चल सकता है:

\n
import com.amazonaws.services.lambda.runtime.events.S3Event\nimport com.amazonaws.services.s3.AmazonS3ClientBuilder\n\nclass S3ProcessorHandler : RequestHandler<S3Event, String>                

ब्लॉग

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