本文介紹了利用 aws 無服務器架構實現 restful api 的方法,詳細概述了架構、數據流和可以使用的 aws 服務。文章還闡述了無服務器架構相較傳統方法的優勢。
本文介紹了AWS無服務器架構上RESTful API的實現。它詳細概述了架構、數據流和可使用的 AWS 服務。本文還介紹了無服務器架構相對於傳統方法的優勢。
什麼是無服務器架構?
無服務器架構,也稱爲無服務器計算或功能即服務,是一種軟件設計方法,允許開發人員構建和運行應用程序而無需管理底層基礎架構。雲服務提供商負責管理和擴展雲基礎架構,包括配置服務器以運行應用程序、數據庫和存儲。
無服務器架構的重要性
企業只需爲其使用的計算資源(例如請求數量、執行時間和消耗的資源)付費,因此無需預付硬件或軟件費用。這樣就無需爲閒置的基礎設施付費,從而大幅節省成本。
無服務器架構會根據工作負載自動擴展和縮小規模。這可確保應用程序能夠處理不同級別的流量。
每個功能都可以獨立擴展,確保根據需求有效分配資源。
無服務器架構非常適合事件驅動的應用程序,其中功能由特定事件(例如 HTTP 請求、數據庫更改或消息隊列更新)觸發。
用於實施的 AWS 服務
以下 AWS 服務可納入 REST API 的實施中。下面的列表提到了 AWS 服務及其在 API 實施中的用途。
路線 53
Route53 可用於域名註冊、DNS 路由、流量流、流量管理、健康檢查和監控。
API 網關
使用API 網關創建、發佈、維護、監控和保護任意規模的 REST API。
可以在 API 網關下創建 HTTP 方法(GET,POST、PUT、DELETE、PATCH、 )。這些方法可以集成到相應的前端控制器 Lambda 函數中。OPTION
網頁應用防火牆
AWS WAF(Web 應用程序防火牆)可幫助您防範常見的 Web 漏洞和機器人,這些漏洞和機器人可能會影響可用性、危害安全性或消耗過多資源。我們可以將 WAF 與 API 網關關聯起來,以過濾掉惡意請求。
使用 WAF 我們可以配置以下內容:
- Web ACL – 用於確定允許的流量的規則和規則組
- 自定義規則- IP 設置匹配條件、字符串和正則表達式匹配條件、地理匹配條件、基於速率的規則
- 機器人控制
拉姆達
用於授權的 Lambda 函數
Lambda 授權器將調用者的身份作爲輸入,並返回IAM策略作爲輸出。使用 Lambda 授權器實現自定義身份驗證和授權。
Lambda 在經過認證和授權之後會向 API 網關返回兩種類型的策略:
- 允許
- 否定
用於業務邏輯的 Lambda 函數
Lambda 函數用於實現業務邏輯、調用其他 lambda 函數、下游服務和數據庫。
其他 AWS 服務
- CloudWatch – 使用 AWS CloudWatch 監控您的應用程序並存儲日誌、儀表板和警報,這些也可以爲報告和主動監控而創建。
- SQS 和 SNS – 使用 AWS SQS 存儲異步消息,使用 SNS 將通知推送到 lambda 函數。
- Dynamo DB 或 RDS – 應用程序數據庫
- IAM – 身份和訪問管理服務,用於定義 AWS 資源的角色和訪問權限
- VPC、子網、安全組- VPC 在安全網絡中隔離 AWS 資源,子網將 VPC 分段以便組織,安全組使用防火牆規則控制流量。
架構和數據流
下面的架構圖描述了所使用的 AWS 服務集、數據流以及與其他服務的集成。
從高層次上講,客戶端向 Amazon API Gateway 發送 HTTP 請求,從而觸發 AWS Lambda 函數。Lambda 函數處理請求,在需要時與其他 AWS 服務交互(例如用於數據存儲的 DynamoDB),並將響應返回給 API Gateway,然後 API Gateway 將響應發送給客戶端。
數據流步驟
- 用戶使用有效的授權標頭(即JWT 令牌、API 密鑰等)向 API 發出 HTTP 請求。
- Route 53 將請求轉發到 API 網關,該請求將被 Web 應用程序防火牆攔截。
- Web 應用程序防火牆配置了不同的規則來保護應用程序免受 Web 攻擊。如果防火牆檢測到任何此類惡意請求,它會立即阻止該請求,否則將其轉發到 API 網關。
- 配置了 API Gateway 的 Lambda Authorizer 會攔截請求並對用戶請求進行身份驗證和授權。如果用戶被授權訪問底層資源,則請求將被轉發到前端控制器 lambda。
- 前端控制器 lambda 將請求委託給相應的服務 lambda 函數。
- 根據業務邏輯,服務 lambda 處理請求並向客戶端返回適當的響應。
- 在處理請求時,服務 lambda 函數可以調用下游 REST API 或數據庫。服務 lambda 函數還可以監聽 SNS 隊列或訂閱 SNS。
- 身份和訪問管理 (IAM) 服務用於定義資源角色並提供對這些角色的訪問。
- 所有資源都會將應用程序日誌推送到 CloudWatch 以進行監控和故障排除。
典型用例
- 無服務器架構可用於需要實時處理數據的事件驅動應用程序,例如數據流或通知處理。
- 微服務可以在無服務器架構上獨立、隔離地實現和部署,以實現更好的可擴展性。
- 處理計劃任務的應用程序可以在無服務器架構上實現和部署,並可根據特定時間觸發。
- 所有以成本爲關鍵因素的用例都可以採用無服務器架構。
基礎設施配置和部署
在企業中,除了生產環境之外,還有多個可用於開發和測試的環境。在不同的環境中創建相同的資源集並手動跟蹤配置更改可能是一項艱鉅的任務,並且可能會引入錯誤。
爲了解決這個問題,可以使用Terraform(基礎設施即代碼)。Terraform 有助於將資源從一個環境複製到另一個環境。除此之外,它還可以跟蹤基礎設施的狀態。
任何CI/CD工具(例如Jenkins或GitLab )都可以使用 Terraform 自動執行部署。
結論
總之,利用 AWS 無服務器架構開發 REST API 在可擴展性、成本效益和易於管理方面具有多種優勢。
通過採用無服務器方法,開發人員可以更加專注於構建強大的 API,而無需管理服務器的開銷。AWS Lambda 的事件驅動模型允許無縫擴展,確保您的 API 可以有效處理不同的工作負載。
以上就是AWS 無服務器架構上的 API 實現的詳細內容,更多請關注本站其它相關文章!