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

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

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

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

TypeScript पर सर्वरलेस फ़ंक्शन: AWS Lambda के लिए पूरी गाइड

\n\n

सर्वरलेस आर्किटेक्चर ने बैकएंड डेवलपमेंट के दृष्टिकोण में क्रांति ला दी है। सर्वर प्रबंधित करने के बजाय, डेवलपर पूरी तरह से बिजनेस लॉजिक पर ध्यान केंद्रित कर सकते हैं। AWS Lambda सर्वरलेस फ़ंक्शन चलाने के लिए सबसे लोकप्रिय सेवाओं में से एक है। इस गाइड में, हम बुनियादी अवधारणाओं से लेकर production-समाधानों तक, TypeScript पर Lambda फ़ंक्शन बनाने, सेटअप करने और डिप्लॉय करने की प्रक्रिया को समझेंगे।

\n\n

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

\n\n

TypeScript JavaScript में स्टैटिक टाइपिंग जोड़ता है, जो सर्वरलेस फ़ंक्शन के लिए महत्वपूर्ण है:

\n\n
    \n
  • टाइप सुरक्षा — कंपाइलेशन के समय त्रुटियों को रोकता है
  • \n
  • ऑटो-कम्प्लीशन — IDE AWS SDK के तरीकों का सुझाव देता है
  • \n
  • पठनीयता — इंटरफ़ेस और टाइप डेटा संरचना का दस्तावेज़ीकरण करते हैं
  • \n
  • स्केलेबिलिटी — प्रोजेक्ट बढ़ने पर कोड बनाए रखना आसान होता है
  • \n
\n\n

प्रोजेक्ट सेटअप

\n\n

1. इनिशियलाइज़ेशन और डिपेंडेंसी इंस्टॉलेशन

\n\n

एक नया प्रोजेक्ट बनाएं और आवश्यक पैकेज इंस्टॉल करें:

\n\n
mkdir my-lambda-project\ncd my-lambda-project\nnpm init -y\n\nnpm install @types/aws-lambda aws-sdk\nnpm install -D typescript ts-node @types/node\n
\n\n

2. TypeScript कॉन्फ़िगरेशन

\n\n

tsconfig.json फ़ाइल बनाएं:

\n\n
{\n  "compilerOptions": {\n    "target": "ES2020",\n    "module": "commonjs",\n    "lib": ["ES2020"],\n    "outDir": "./dist",\n    "rootDir": "./src",\n    "strict": true,\n    "esModuleInterop": true,\n    "skipLibCheck": true,\n    "forceConsistentCasingInFileNames": true,\n    "resolveJsonModule": true,\n    "declaration": true,\n    "declarationMap": true,\n    "sourceMap": true\n  },\n  "include": ["src/**/*"],\n  "exclude": ["node_modules", "dist"]\n}\n
\n\n

पहला Lambda फ़ंक्शन बनाना

\n\n

हैंडलर की बुनियादी संरचना

\n\n

src/handler.ts फ़ाइल बनाएं:

\n\n
import { Handler, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';\n\ninterface UserData {\n  userId: string;\n  name: string;\n  email: string;\n}\n\nexport const handler: Handler<APIGatewayProxyEvent, APIGatewayProxyResult> = async (event) => {\n  try {\n    // अनुरोध बॉडी को पार्स करना\n    const body: UserData = JSON.parse(event.body || '{}');\n    \n    // वैलिडेशन\n    if (!body.userId || !body.name) {\n      return {\n        statusCode: 400,\n        headers: {\n          'Content-Type': 'application/json',\n          'Access-Control-Allow-Origin': '*'\n        },\n        body: JSON.stringify({ error: 'Missing required fields' })\n      };\n    }\n\n    // बिजनेस लॉजिक\n    const result = {\n      id: body.userId,\n      displayName: body.name.toUpperCase(),\n      createdAt: new Date().toISOString()\n    };\n\n    return {\n      statusCode: 200,\n      headers: {\n        'Content-Type': 'application/json',\n        'Access-Control-Allow-Origin': '*'\n      },\n      body: JSON.stringify(result)\n    };\n  } catch (error) {\n    console.error('Error processing request:', error);\n    return {\n      statusCode: 500,\n      body: JSON.stringify({ error: 'Internal server error' })\n    };\n  }\n};\n
\n\n

एनवायरनमेंट और सीक्रेट्स के साथ काम करना

\n\n

कॉन्फ़िगरेशन के लिए एनवायरनमेंट वेरिएबल का उपयोग करें:

\n\n
import { Handler } from 'aws-lambda';\n\ninterface Config {\n  DB_TABLE: string;\n  MAX_RETRIES: number;\n}\n\nexport const handler: Handler = async (event) => {\n  const config: Config = {\n    DB_TABLE: process.env.DB_TABLE || 'default-table',\n    MAX_RETRIES: parseInt(process.env.MAX_RETRIES || '3', 10)\n  };\n\n  // संवेदनशील डेटा के लिए AWS Secrets Manager या Parameter Store का उपयोग करें\n  return {\n    statusCode: 200,\n    body: JSON.stringify({ table: config.DB_TABLE })\n  };\n};\n
\n\n

उन्नत तकनीकें

\n\n

1. प्रोसेसिंग

ब्लॉग

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