實戰演練:用 AWS Lambda 和 API Gateway 構建你的第一個 Serverless API

實戰演練:用 AWS Lambda 和 API Gateway 構建你的第一個 Serverless API


理論千遍,不如動手一遍!在前面幾篇文章中,我們了解了 Serverless 的概念、FaaS 的核心原理以及 BaaS 的重要作用。現在,是時候把這些知識運用起來,親手構建一個簡單但完整的 Serverless 應用了。

本次實戰,我們將使用 Amazon Web Services (AWS) 這個主流的云平臺,結合它的兩個核心 Serverless 服務:

  • AWS Lambda (FaaS): 運行我們的后端代碼。
  • AWS API Gateway (BaaS): 創建一個公開的 HTTP 接口,接收請求并觸發 Lambda 函數。

目標: 創建一個簡單的 HTTP GET API 端點,當用戶訪問這個端點時,它會返回一個 JSON 消息:“Hello from Lambda!”。

聽起來很簡單?沒錯!但這將讓你體驗到 Serverless 開發的核心流程。

準備工作

在開始之前,請確保你已準備好:

  1. 一個 AWS 賬戶: 如果沒有,可以訪問 AWS 官網 免費注冊一個。新用戶通常有一年的免費套餐額度,足夠我們本次實驗使用。
  2. 登錄 AWS 管理控制臺: 我們將主要通過 AWS 的網頁界面來完成操作,對新手更友好。
  3. (可選) Node.js 環境: 我們將使用 Node.js 編寫 Lambda 函數代碼。雖然可以直接在 AWS 控制臺編輯,但如果你想在本地編寫和測試,需要安裝 Node.js (LTS 版本即可)。

準備好了嗎?我們開始吧!

第一步:創建 Lambda 函數

我們的“大腦”——處理請求的代碼,將放在 Lambda 函數中。

  1. 登錄 AWS 管理控制臺。
  2. 在頂部的搜索欄中輸入 Lambda,然后點擊進入 Lambda 服務頁面。
  3. 點擊 “創建函數” (Create function) 按鈕。
  4. 選擇 “從頭開始創作” (Author from scratch)
  5. 基本信息配置:
    • 函數名稱 (Function name): 輸入一個有意義的名稱,例如 myHelloFunction
    • 運行時 (Runtime): 選擇一個較新的 Node.js LTS 版本,例如 Node.js 18.xNode.js 20.x
    • 架構 (Architecture): 保持默認的 x86_64 即可。
    • 權限 (Permissions): 展開 “更改默認執行角色” (Change default execution role)。選擇 “創建具有基本 Lambda 權限的新角色” (Create a new role with basic Lambda permissions)。這將自動創建一個允許函數將日志寫入 AWS CloudWatch 的角色,方便后續排查問題。
  6. 點擊 “創建函數” (Create function)。等待函數創建完成。

編寫函數代碼:

  1. 函數創建成功后,向下滾動到 “代碼源” (Code source) 部分。

  2. 你會看到一個默認的 index.mjsindex.js 文件。將其中的全部內容替換為以下 Node.js 代碼:

    // 使用 async/await 語法定義 handler
    export const handler = async 

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/80673.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/80673.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/80673.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

node.js 實戰——express圖片保存到本地或服務器(七牛云、騰訊云、阿里云)

本地 ? 使用formidable 讀取表單內容 npm i formidable ? 使用mime-types 獲取圖片后綴 npm install mime-types? js 中提交form表單 document.getElementById(uploadForm).addEventListener(submit, function(e){e.preventDefault();const blob preview._blob;if(!blob)…

2025最新:3分鐘使用Docker快速部署單節點Redis

🧑?🏫 詳細教程:通過 Docker 安裝單節點 Redis 🛠? 前提條件: 你需要在 Ubuntu 系統上進行操作(如果你在其他系統上操作,可以按相似步驟進行調整)。已安裝 Docker 和 Docker Com…

CentOS 7 系統下安裝 OpenSSL 1.0.2k 依賴問題的處理

前面有提到過這個openssl的版本沖突問題,也是在這次恢復服務器時遇到的問題,我整理如下,供大家參考。小小一個軟件的安裝,挺坑的。 一、問題 項目運行環境需要,指定PHP7.0.9這個版本,但是?系統版本與軟件…

LoRA(Low-Rank Adaptation)原理詳解

LoRA(Low-Rank Adaptation)原理詳解 LoRA(低秩適應)是一種參數高效微調(Parameter-Efficient Fine-Tuning, PEFT)技術,旨在以極低的參數量實現大模型在特定任務上的高效適配。其核心思想基于低秩分解假設,即模型在適應新任務時,參數更新矩陣具有低秩特性,可用少量參…

Solana批量轉賬教程:提高代幣持有地址和生態用戶空投代幣

前言 Solana區塊鏈因其高吞吐量和低交易費用成為批量操作(如空投)的理想選擇。本教程將介紹幾種在Solana上進行批量轉賬的方法,幫助您高效地向多個地址空投代幣。 solana 賬戶模型 在Solana中有三類賬戶: 數據賬戶,…

基于LSTM與SHAP可解釋性分析的神經網絡回歸預測模型【MATLAB】

基于LSTM與SHAP可解釋性分析的神經網絡回歸預測模型【MATLAB】 一、引言 在數據驅動的智能時代,時間序列預測已成為許多領域(如金融、氣象、工業監測等)中的關鍵任務。長短期記憶網絡(LSTM)因其在捕捉時間序列長期依…

手機網頁提示ip被拉黑名單什么意思?怎么辦

?當您使用手機瀏覽網頁時,突然看到“您的IP地址已被列入黑名單”的提示,是否感到困惑和不安?這種情況在現代網絡生活中并不罕見,但確實會給用戶帶來諸多不便。本文將詳細解釋IP被拉黑的含義、常見原因,并提供一系列實…

Java消息隊列性能優化實踐:從理論到實戰

Java消息隊列性能優化實踐:從理論到實戰 1. 引言 在現代分布式系統架構中,消息隊列(Message Queue,MQ)已經成為不可或缺的中間件組件。它不僅能夠實現系統間的解耦,還能提供異步通信、流量削峰等重要功能…

BUUCTF——Cookie is so stable

BUUCTF——Cookie is so stable 進入靶場 頁面有點熟悉 跟之前做過的靶場有點像 先簡單看一看靶場信息 有幾個功能點 flag.php 隨便輸了個admin 根據題目提示 應該與cookie有關 抓包看看 構造payload Cookie: PHPSESSIDef0623af2c1a6d2012d57f3529427d52; user{{7*7}}有…

json格式不合法情況下,如何盡量保證數據可用性

背景 在工作流程中,并非所有數據都如人所愿,即使json版本也會由于csv、tsv、excel、text等不同文件格式轉化、獲取數據源不完整等問題,造成我們要處理的json文件存在不合法。 嘗試方案 除了人為修正外,有效的方法是使用json“修…

Python基礎總結(十)之函數

Python函數 函數是Python中也是非常重要的,函數是帶名字的代碼塊,用于完成具體的工作。要執行函數定義的特定任務,可調用該函數。 一、函數的定義 函數的定義要使用def關鍵字,def后面緊跟函數名,縮進的為函數的代碼塊。 def test():print("Hello,World")上述…

懶人美食幫SpringBoot訂餐系統開發實現

概述 快速構建一個訂餐系統,今天,我們將通過”懶人美食幫”這個基于SpringBoot的訂餐系統項目,為大家詳細解析從用戶登錄到多角色權限管理的完整實現方案。本教程特別適合想要學習企業級應用開發的初學者。 主要內容 1. 用戶系統設計與實現…

AI(學習筆記第三課) 使用langchain進行AI開發(2)

文章目錄 AI(學習筆記第三課) 使用langchain進行AI開發(2)學習內容:1. 返回結構化數據(structured_output pydantic)1.1 使用背景1.2 返回結構化數據示例代碼(pydantic)1.3 執行測試代碼2 返回結構化數據(json)2.1 示例代碼2.2 執行結果3 給提供一些例子(few shot pr…

unity 使用藍牙通訊(PC版,非安卓)

BlueTooth in pc with unity 最近接到的需求是在unity里面開發藍牙功能,其實一開始我并不慌,因為據我所知,unity有豐富的插件可以使用,但是問題隨之而來 1.unity里面無法直接與藍牙通訊(后來找到了開啟runtime一類的東西,但是我找了半天也沒找到在哪里可以打開) 2.引入dll通過d…

MySQL中的意向鎖 + next-key鎖 + 間隙鎖

引言 在數據庫并發控制中,鎖機制是保障數據一致性和隔離性的核心手段。MySQL中意向鎖、間隙鎖以及next-key鎖等復雜鎖類型,旨在協調表級鎖與行級鎖之間的關系,防止數據的臟讀、不可重復讀和幻讀現象,尤其是在可重復讀隔離級別下發…

機器學習 數據集

數據集 1. scikit-learn工具介紹1.1 scikit-learn安裝1.2 Scikit-learn包含的內容 2 數據集2.1 sklearn玩具數據集介紹2.2 sklearn現實世界數據集介紹2.3 sklearn加載玩具數據集示例1:鳶尾花數據示例2:分析糖尿病數據集 2.4 sklearn獲取現實世界數據集示…

Linux-c語言串口程序

c語言串口程序 // C library headers #include <stdio.h> #include <string.h>// Linux headers #include <fcntl.h> // Contains file controls like O_RDWR #include <errno.h> // Error integer and strerror() function #include <termios.h&g…

TCP IP

TCP/IP 通信協議&#xff0c;不是單一協議&#xff0c;是一組協議的集合 TCP IP UDP 1.建立鏈接 三次握手 第一步&#xff1a;客戶端發送一個FIN報文&#xff0c;SEQX,等待服務器回應 第二步&#xff1a;服務器端受到&#xff0c;發送ackx1,seqy, 等待客戶端回應 第三步&am…

用uniapp在微信小程序實現畫板(電子簽名)功能,使用canvas實現功能

效果&#xff1a; 功能&#xff1a;實現重簽 退出 保存 等功能 解決的問題: 電子簽名畫布抖動問題解 注意&#xff1a; 保存的時候上傳到自己的服務器地址&#xff0c;后端返回圖片地址 代碼&#xff1a; <template><view><view class"signature&qu…

機器學習經典算法:用決策樹原理優化新能源汽車續航能力

?? “用決策樹重構新能源車能量大腦!算法推導+代碼實戰全解,續航暴增15%” 決策樹算法就像我們生活中做決策的 “流程指南”,通過層層判斷得出最終結論。比如你去超市買水果,站在琳瑯滿目的貨架前,就不自覺地用上了決策樹思維。首先,你可能會想 “今天想吃酸的還是甜的…