विषयसूची – परिचय: API तैनात करने के लिए SAM का उपयोग क्यों करें? – पूर्वापेक्षाएँ: SAM CLI स्थापित करें – चरण 1: SAM आरंभ करें – चरण 2: API एंडपॉइंट को परिभाषित करें – चरण 3: स्थानीय स्तर पर निर्माण और परीक्षण करें – चरण 4: एपीआई तैनात करें – चरण 5: गिटहब क्रियाओं के साथ CI / CD - निष्कर्ष परिचय: API तैनात करने के लिए SAM का उपयोग क्यों करें? AWS सर्वरलेस एप्लिकेशन मॉडल (SAM) का उपयोग करके API तैनात करना क्लाउड-आधारित अनुप्रयोगों के लिए एक कुशल और स्केलेबल दृष्टिकोण है। यह बुनियादी ढांचे के प्रबंधन को सरल बनाता है, अंतर्निहित SSL/TLS समर्थन प्रदान करता है, और क्लाउडफॉर्मेशन, लैम्ब्डा, एस3, रूट 53 और क्लाउडवॉच जैसी AWS सेवाओं के साथ सहजता से एकीकृत होता है। सर्वर रहित मॉडल का लाभ उठाकर, डेवलपर्स एप्लिकेशन लॉजिक लिखने पर ध्यान केंद्रित कर सकते हैं, जबकि AWS स्केलिंग, सुरक्षा और रखरखाव को संभालता है, जिससे यह आधुनिक, उच्च-उपलब्धता API के लिए एक आदर्श समाधान बन जाता है। यह ट्यूटोरियल आपको एक सरल API बनाने, SAM CLI के साथ AWS CloudFormation का उपयोग करके इसे तैनात करने और फिर GitHub Actions का उपयोग करके तैनाती को स्वचालित करने के बारे में चरण-दर-चरण मार्गदर्शन करेगा। इस कार्यप्रवाह का अधिक विस्तृत आरेख यहां दिया गया है: आवश्यक शर्तें AWS CLI और SAM CLI स्थापित. Node.js स्थापित स्थानीय परीक्षण के लिए . Docker खाता. GitHub पूर्वापेक्षाएँ: SAM CLI स्थापित करें ट्यूटोरियल में आगे बढ़ने से पहले, सुनिश्चित करें कि आपकी मशीन पर AWS SAM CLI इंस्टॉल है। नीचे macOS और Windows के लिए इंस्टॉलेशन चरण दिए गए हैं: MacOS के लिए (यदि पहले से स्थापित नहीं है): होमब्रू स्थापित करें /bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" : AWS टैप जोड़ें और SAM CLI स्थापित करें brew tap aws/tapbrew install aws-sam-cli के साथ स्थापना को सत्यापित करें sam --version विंडोज के लिए : SAM CLI इंस्टॉलर डाउनलोड करें पर जाएं और नवीनतम Windows इंस्टॉलर डाउनलोड करें। आधिकारिक AWS SAM CLI पृष्ठ : इंस्टॉलर चलाएँ डाउनलोड की गई फ़ाइल पर डबल-क्लिक करें और इंस्टॉलेशन विज़ार्ड का पालन करें। .exe (यदि स्वचालित रूप से नहीं जोड़ा गया है): PATH में SAM CLI जोड़ें स्टार्ट मेनू खोलें और "पर्यावरण चर" खोजें। “सिस्टम पर्यावरण चर संपादित करें” पर क्लिक करें। “सिस्टम गुण” के अंतर्गत, “पर्यावरण चर” बटन पर क्लिक करें। "सिस्टम वेरिएबल्स" में ढूंढें और "संपादित करें" पर क्लिक करें। Path वह निर्देशिका जोड़ें जहाँ SAM CLI स्थापित किया गया था (उदाहरण के लिए, )। C:\Program Files\Amazon\AWS SAM CLI\bin : कमांड प्रॉम्प्ट खोलें और चलाएँ स्थापना की पुष्टि करें sam --version चरण 1: SAM CLI को आरंभ करें अपनी मशीन पर एक नया रिपॉजिटरी बनाएं: mkdir aws-serverless-api निर्देशिका पर जाएँ: cd aws-serverless-api फिर आपको कुछ विकल्प दिए जाएँगे। यहाँ मेरा सेटअप है: एक नया SAM एप्लीकेशन आरंभ करें: sam init “1 — AWS त्वरित प्रारंभ टेम्पलेट्स” चुनें। API गेटवे पर लैम्ब्डा समर्थित सर्वरलेस API तैनात करने के लिए चुनें।” “7 — सर्वरलेस API” चुनें “Node.js 20.x” एक्स-रे ट्रेसिंग के लिए या No चुनें क्योंकि हम अपनी लागत कम करना चाहते हैं, और यह सिर्फ़ एक सरल Hello World उदाहरण है। यदि आप अलग-अलग सेवाओं को खींचने वाला एक जटिल API बना रहे हैं, तो आप डीबगिंग में मदद के लिए उसे सक्षम करना चाह सकते हैं। “N” मैं क्लाउडवॉच मॉनिटरिंग के लिए भी चुन रहा हूं क्योंकि हमें इस हैलो वर्ल्ड उदाहरण के लिए प्रदर्शन पर विश्लेषण की आवश्यकता नहीं है। "N" इसके अलावा लैम्ब्डा लॉग में JSON प्रारूप के लिए का उपयोग करें क्योंकि यह सिर्फ एक हैलो वर्ल्ड उदाहरण है। "N" अब, आइए उस निर्देशिका में cd करें जिसे उत्पन्न किया था; मैंने अपने प्रोजेक्ट का नाम चुना है, तो चलिए शुरू करते हैं: sam init sam-hello-world cd sam-hello-world फिर VSCode — जब आप VSCode या अपने पसंदीदा IDE में प्रोजेक्ट खोलते हैं, तो आपको पहले से ही बहुत सारी जेनरेट की गई फ़ाइलें दिखनी चाहिए। code . उत्पन्न फ़ाइलों को समझना से उत्पन्न प्रत्येक फ़ाइल क्या करती है, यह इस प्रकार है: sam init – आपके API गेटवे, लैम्ब्डा और अन्य AWS संसाधनों को परिभाषित करता है। **template.yaml** – इसमें नमूना लैम्ब्डा फ़ंक्शन हैंडलर शामिल हैं। **src/handlers/** – स्थानीय परीक्षण के लिए नमूना परीक्षण घटनाएँ. **events/** – Node.js लैम्ब्डा फ़ंक्शन के लिए निर्भरता प्रबंधित करता है। **package.json** – मानक परियोजना सेटअप फ़ाइलें. **.gitignore** , **README.md** हम । अपने बहुत ही सरल "हेल्लो वर्ल्ड" एपीआई में फिट करने के लिए इनमें से कुछ फ़ाइलों को संशोधित और हटा देंगे चरण 2: API एंडपॉइंट को परिभाषित करें अब, खोलें और मौजूदा लैम्ब्डा फ़ंक्शन परिभाषाओं को निम्नलिखित के साथ बदलें: template.yaml AWSTemplateFormatVersion: "2010-09-09" Transform: AWS::Serverless-2016-10-31 Description: AWS SAM template for deploying Node.js/Express API to Lambda Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: Handler: src/app.lambdaHandler Runtime: nodejs20.x Events: HelloWorld: Type: Api Properties: Path: / Method: GET यह हमारे API के मूल में एक रूट को परिभाषित करता है जो एक GET अनुरोध है लैम्ब्डा फ़ंक्शन को अपडेट करें निर्देशिका में, आइए नामक एक फ़ाइल बनाएं /src app.js में, आइए हमारे रूट से hello world आउटपुट करने के लिए एक फ़ंक्शन लिखें: src/app.js exports.lambdaHandler = async (event) => { return { statusCode: 200, body: JSON.stringify({ message: "Hello, World!" }) }; }; अनावश्यक फ़ाइलें हटाएँ अब, आइए चरण 1 में द्वारा उत्पन्न अतिरिक्त हैंडलर्स और इवेंट्स को हटा दें। sam init प्रोजेक्ट निर्देशिका में टर्मिनल खोलें और : इन कमांडों को निष्पादित करें rm -rf src/handlers/get-all-items.mjs src/handlers/get-by-id.mjs src/handlers/put-item.mjs rm -rf events/ चरण 3: स्थानीय स्तर पर निर्माण और परीक्षण करें प्रोजेक्ट निर्देशिका में टर्मिनल खोलें और नीचे दिए गए चरणों का पालन करें: : एप्लिकेशन बनाएं आपको इस तरह का आउटपुट दिखना चाहिए: sam build : स्थानीय API सर्वर प्रारंभ करें — ध्यान दें कि इसे स्थानीय रूप से चलाने के लिए आपको इंस्टॉल करना होगा। सफल होने पर, आपको docker डेस्कटॉप में हमारे API के लिए बनाया गया कंटेनर दिखाई देना चाहिए। sam local start-api docker एंडपॉइंट का परीक्षण करने के लिए ब्राउज़र खोलें या टर्मिनल में का उपयोग करें: curl curl [http://127.0.0.1:3000/](http://127.0.0.1:3000/) यदि आपको हमारे एंडपॉइंट से लौटा हुआ JSON दिखाई देता है, तो आपने स्थानीय रूप से API सफलतापूर्वक प्रारंभ कर दिया है! 🚀 चरण 4: API तैनात करें : अब जब हमने पुष्टि कर ली है कि हमारा API स्थानीय रूप से काम कर रहा है, तो आइए इसे AWS पर तैनात करें SAM का उपयोग करके API को पैकेज और तैनात करें sam deploy --guided यह निर्देशित तैनाती आपको यह करने की अनुमति देगी: 1. अपना स्टैक नाम चुनें; मेरा नाम है sam-hello-world 2. AWS क्षेत्र चुनें; मेरा है us-east-1 3. तैनाती से पहले परिवर्तनों की पुष्टि करें; मैंने चुना Y 4. SAM-CLI भूमिका निर्माण की अनुमति दें, Y 5. रोलबैक अक्षम करें, चुनें हम चाहते हैं कि उपकरण किसी भी विफल संसाधनों को साफ कर दे N 6. HelloWorldFunction में कोई प्रमाणीकरण नहीं है; क्या यह ठीक है? इस ट्यूटोरियल के प्रयोजनों के लिए Y 7. तर्कों को कॉन्फ़िगरेशन फ़ाइल में सहेजें Y 8. कॉन्फ़िगरेशन फ़ाइल samconfig.toml 9. SAM कॉन्फ़िगरेशन वातावरण - इसे डिफ़ॉल्ट के रूप में छोड़ दें यदि आपकी तैनाती सफल रही, तो आपको इस तरह सफलतापूर्वक बनाए गए संसाधन दिखाई देंगे: जब परिनियोजन सफल हो जाए, और API गेटवे सेवा खोजें। API सेटिंग्स पर जाएँ, अपने डोमेन को कॉपी करें और इसे अपने ब्राउज़र विंडो पर URL इनपुट में पेस्ट करें, और अपने परिनियोजित API एंडपॉइंट तक पहुँचने के लिए अपने URL के अंत में `/Prod` जोड़ें। तो अपने AWS खाते में लॉग इन करें मेरा यूआरएल इस तरह दिखता है: आप अपने परिनियोजित सर्वर रहित लैम्ब्डा फ़ंक्शन को देखने के लिए AWS कंसोल में लैम्ब्डा की खोज भी कर सकते हैं, जहां इस एंडपॉइंट के लिए हमारे द्वारा लिखा गया कोड रहता है। आपको एक S3 बकेट भी बना हुआ दिखाई देना चाहिए, जिसमें हमारे कोड का बंडल है। अब जबकि हमने अपना API सफलतापूर्वक तैनात कर दिया है, तो चलिए GitHub के साथ इस प्रक्रिया को स्वचालित करते हैं ताकि जब भी हम अपने API पर विकास करना चाहें, तो MAIN या MASTER शाखा में प्रतिबद्ध होने से तैनाती स्वचालित रूप से ट्रिगर हो सकती है। चरण 5: गिटहब एक्शन के साथ CI/CD अपने Git Repo को आरंभ करें और अपने मास्टर शाखा पर पुश करें सबसे पहले, हम के साथ अपने प्रोजेक्ट की डायरेक्टरी में git रिपोजिटरी को इनिशियलाइज़ करेंगे। फिर, इन फ़ाइलों को अपने में जोड़ेंगे क्योंकि हम उन्हें कमिट नहीं करना चाहते हैं। git init .gitignore echo "node_modules/\n.aws-sam/\nsamconfig.toml" >> .gitignore अब, हम प्रोजेक्ट में सभी फ़ाइलों को सुरक्षित रूप से स्टेज कर सकते हैं: और फिर अपना पहला कमिट करें: git add . git commit -m "Initial commit - AWS SAM API setup" यह अगला चरण मानता है कि आपके पास GitHub CLI स्थापित है - यह चरण इसलिए है ताकि हम अपनी वर्तमान निर्देशिका से GitHub रेपो बना सकें: gh repo create aws-sam-cli-tutorial --public --source=. --remote=origin यदि आपके पास GitHub CLI नहीं है, तो आप GitHub पर मैन्युअल रूप से रिपोजिटरी बना सकते हैं और फिर इस कमांड के साथ निर्देशिका को अपने रिपोजिटरी पर इंगित कर सकते हैं: git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO_NAME.git अंत में, आइए अपने कोड को GitHub पर पुश करें git push -u origin master CI/CD के लिए GitHub क्रियाएँ सेट करें आइए GitHub क्रिया वर्कफ़्लो फ़ाइल बनाएं: mkdir -p .github/workflows touch .github/workflows/deploy.yml उस फ़ाइल को vscode में खोलें और निम्नलिखित yaml कॉन्फ़िगरेशन पेस्ट करें: deploy.yml name: Deploy API to AWS CloudFormation on: push: branches: - master jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout Code uses: actions/checkout@v3 - name: Install AWS SAM CLI uses: aws-actions/setup-sam@v2 - name: Configure AWS CLI uses: aws-actions/configure-aws-credentials@v2 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} aws-region: us-east-1 - name: Build and Deploy API run: | sam build sam deploy \ --stack-name sam-hello-world \ --s3-bucket ${{ secrets.AWS_S3_BUCKET }} \ --capabilities CAPABILITY_IAM \ --region ${{ secrets.AWS_REGION }} \ --no-confirm-changeset \ --no-fail-on-empty-changeset स्वचालित परिनियोजन के लिए इस .yaml फ़ाइल में, हम SAM CLI को स्थापित करने और हमारे क्रेडेंशियल्स को कॉन्फ़िगर करने के लिए GitHub: से AWS-Actions रिपॉजिटरी पर भरोसा करते हैं - ये AWS रिपॉजिटरी कुछ वर्षों में बदल सकती हैं, इसलिए आवश्यकतानुसार अपडेट करें। https://github.com/orgs/aws-actions/repositories अब, github.com पर जाएं - अपने रिपॉजिटरी पर जाएं, इस प्रोजेक्ट के लिए हमारे द्वारा बनाई गई रिपॉजिटरी पर क्लिक करें, सेटिंग्स, एक्शन पर जाएं, और आपको पर्यावरण और रिपॉजिटरी सीक्रेट्स जोड़ने के लिए यह स्क्रीन दिखाई देगी। हम निम्नलिखित के लिए रिपॉजिटरी सीक्रेट्स जोड़ना चाहेंगे: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_REGION AWS_S3_BUCKET इन मानों को प्राप्त करने के लिए, अपने AWS कंसोल पर जाएँ। आपको उसी क्षेत्र का उपयोग करना होगा जिसे आपने अपनी स्थानीय मशीन से तैनात किया था। यदि आप क्षेत्र के बारे में अनिश्चित हैं, तो cloudformation खोजें और आपके द्वारा बनाया गया स्टैक ढूंढें, उस पर क्लिक करें, और आपको URL में क्षेत्र दिखाई देना चाहिए। AWS_REGION के लिए, AWS कंसोल में S3 खोजें और उस बकेट का चयन करें जो चरण 4 में हमारी मशीन से तैनाती के समय बनाई गई थी। अपने मान के लिए इस बकेट की आईडी का उपयोग करें; मेरी आईडी नीचे स्क्रीनशॉट में दिखाई गई है। AWS_S3_BUCKET के लिए, और AWS कंसोल में IAM सेवा पर जाएँ: AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY, यहां से, यदि आपके पास पहले से कोई IAM उपयोगकर्ता नहीं है, तो उस पहुंच के साथ एक IAM उपयोगकर्ता बनाएं जिसका आप उपयोग करना चाहते हैं, और उपयोगकर्ता में कम से कम ये अनुमति क्षेत्र जोड़ें: AWSLambdaFullAccess IAMFullAccess AmazonS3FullAccess CloudFormationFullAccess AmazonAPIGatewayAdministrator यदि आप इससे सहज हैं तो आप भी जोड़ सकते हैं। उसके बाद, हम इस उपयोगकर्ता के लिए एक एक्सेस कुंजी और सीक्रेट बनाना चाहेंगे। एक्सेस कुंजी के लिए उपयोग के मामले के रूप में CLI चुनें। अपने सीक्रेट को कॉपी करना सुनिश्चित करें क्योंकि आप इसे फिर से नहीं देख पाएंगे। AdministratorAccess अब, GitHub पर वापस जाएं और अपने रिपॉजिटरी सीक्रेट्स जोड़ें: ठीक है, अंतिम चरण यह जांचना है कि सब कुछ काम करता है! अपने app.js को कुछ और कहने के लिए अपडेट करें; मैंने इसे “क्या हो रहा है, दुनिया!” में बदल दिया है। exports.lambdaHandler = async (event) => { return { statusCode: 200, body: JSON.stringify({ message: "What up, World!" }), }; }; फिर, अपने परिवर्तनों को अपनी मास्टर शाखा में पुश करें। - सुनिश्चित करें कि पुश करते समय आप मास्टर शाखा पर हैं। git add . git commit -m 'updated message' git push अपने GitHub रिपो में, आपको क्रिया को चलते हुए और सफलतापूर्वक तैनात होते हुए देखना चाहिए: अंत में, अपने वेब ब्राउज़र पर वापस जाएँ और हमारे द्वारा सेट किए गए API गेटवे से URL पेस्ट करें। मेरा URL है: — और पुष्टि करें कि संदेश बदल दिया गया है। https://tt40c6vgm3.execute-api.us-east-1.amazonaws.com/Prod निष्कर्ष बधाई हो! आपने अभी-अभी सर्वर रहित AWS स्टैक के लिए CI/CD परिनियोजन पाइपलाइन बनाई है; अब, आप उपयोगी सेवाओं के साथ अपना API बनाने में व्यस्त हो सकते हैं। मुझे बताएं कि क्या यह लेख उपयोगी था या यदि आपके पास सुधार के लिए कोई प्रश्न या सुझाव है!