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

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

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

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

परिचय: सर्वरलेस और PHP — यह कोई विरोधाभास क्यों नहीं है

\n\n

लंबे समय तक यह माना जाता था कि PHP और सर्वरलेस आर्किटेक्चर असंगत हैं। PHP Apache या Nginx की स्थायी प्रक्रियाओं से जुड़ा था, जबकि सर्वरलेस Node.js या Python से। हालांकि, Bref जैसे टूल और AWS Lambda में कस्टम रनटाइम एनवायरनमेंट (Custom Runtimes) के आधिकारिक समर्थन के साथ, PHP को दूसरी जान मिल गई।

\n\n

सर्वरलेस फंक्शन आपको सर्वर प्रबंधित किए बिना PHP कोड चलाने की अनुमति देते हैं। आप केवल वास्तविक निष्पादन समय (मिलीसेकंड तक सटीक) के लिए भुगतान करते हैं। यह इसके लिए एक आदर्श समाधान है:

\n
    \n
  • वेबहुक हैंडलर (Telegram, Stripe, Slack);
  • \n
  • कम लोड वाले माइक्रोसर्विसेज;
  • \n
  • CloudWatch Events के माध्यम से आवधिक कार्य (cron);
  • \n
  • API-प्रॉक्सी और हल्के बैकएंड।
  • \n
\n\n

इस लेख में, हम शुरू से AWS Lambda पर PHP चलाने का तरीका समझेंगे: IAM-रोल बनाने से लेकर एक कार्यशील फंक्शन को डिप्लॉय करने तक।

\n\n

1. AWS Lambda में PHP की आर्किटेक्चर

\n\n

Custom Runtime कैसे काम करता है

\n

AWS Lambda मूल रूप से केवल Java, Go, PowerShell, Node.js, C#, Python और Ruby का समर्थन करता है। PHP चलाने के लिए, हम Custom Runtime का उपयोग करते हैं — यह एक विशेष निष्पादन योग्य फ़ाइल (bootstrap) है जो Lambda Runtime API के साथ संवाद करती है।

\n\n

सबसे लोकप्रिय तरीका Bref फ्रेमवर्क है। यह PHP 8.x, Composer और मानक एक्सटेंशन के सेट के साथ तैयार लेयर (Layer) प्रदान करता है।

\n\n
// Bref के लिए प्रोजेक्ट संरचना\nproject/\n├── index.php          // प्रवेश बिंदु\n├── composer.json\n├── serverless.yml     // डिप्लॉय कॉन्फ़िगरेशन\n└── vendor/
\n\n

डिप्लॉय के तीन तरीके

\n
    \n
  1. Bref (अनुशंसित) — सबसे आसान। serverless.yml और तैयार लेयर का उपयोग करता है।
  2. \n
  3. मैन्युअल बिल्ड — आप Amazon Linux 2 के लिए PHP कंपाइल करते हैं और ZIP में पैक करते हैं।
  4. \n
  5. Docker इमेज — आप Lambda Container Image का उपयोग करते हैं (2020 से समर्थित)।
  6. \n
\n\n

हम पहले विकल्प पर विचार करेंगे — यह 90% कार्यों के लिए उपयुक्त है।

\n\n

2. चरण-दर-चरण सेटअप: इंस्टॉलेशन से पहले अनुरोध तक

\n\n

चरण 1. एनवायरनमेंट तैयार करना

\n

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

\n
    \n
  • PHP 8.0+ (स्थानीय रूप से)
  • \n
  • Composer
  • \n
  • Node.js और npm (Serverless Framework के लिए)
  • \n
  • कॉन्फ़िगर किए गए credentials के साथ aws-cli उपयोगिता
  • \n
\n\n

Serverless Framework को वैश्विक रूप से इंस्टॉल करें:

\n
npm install -g serverless
\n\n

चरण 2. प्रोजेक्ट बनाएं

\n
composer create-project bref/bref my-php-lambda\ncd my-php-lambda
\n\n

इनिशियलाइज़ेशन के बाद, आपको serverless.yml फ़ाइल दिखाई देगी। इसे संपादित करें:

\n\n
service: my-php-app\n\nprovider:\n    name: aws\n    region: eu-central-1  # निकटतम क्षेत्र चुनें\n    runtime: provided.al2  # Amazon Linux 2\n\nplugins:\n    - ./vendor/bref/bref\n\nfunctions:\n    hello:\n        handler: index.php\n        description: 'सरल PHP फंक्शन'\n        layers:\n            - ${bref:layer.php-80}  # PHP 8.0 के साथ लेयर
\n\n

चरण 3. फंक्शन लिखें

\n

index.php खोलें:

\n\n
<?php\n\nrequire __DIR__ . '/vendor/autoload.php';\n\n/**\n * Lambda-फंक्शन हैंडलर\n * @param array $event AWS (API Gateway, SQS आदि) से इनपुट डेटा\n * @return array JSON प्रारूप में उत्तर\n */\nfunction handler(array $event): array\n{\n    // CloudWatch में लॉग करें\n    error_log('अनुरोध प्राप्त हुआ: ' . json_encode($event));\n\n    $name = $event['queryStringParameters']['name'] ?? 'अतिथि';\n\n    return [\n        'statusCode' => 200,\n        'headers' => [\n            'Content-Type' => 'application/json',\n        ],\n        'body' => json_encode([\n            'message' => "नमस्ते, {$name}!",\n            'timestamp' => time(),\n        ]),\n    ];\n}
\n

ब्लॉग

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