網(wǎng)頁應用防火墻
AWS WAF(Web 應用程序防火墻)可幫助您防范常見的 Web 漏洞和機器人,這些漏洞和機器人可能會影響可用性、危害安全性或消耗過多資源。我們可以將 WAF 與 API 網(wǎng)關(guān)關(guān)聯(lián)起來,以過濾掉惡意請求。
使用 WAF 我們可以配置以下內(nèi)容:
- Web ACL – 用于確定允許的流量的規(guī)則和規(guī)則組
- 自定義規(guī)則– IP 設置匹配條件、字符串和正則表達式匹配條件、地理匹配條件、基于速率的規(guī)則
- 機器人控制
Lambda
用于授權(quán)的 Lambda 函數(shù)
Lambda 授權(quán)器將調(diào)用者的身份作為輸入,并返回IAM策略作為輸出。使用 Lambda 授權(quán)器實現(xiàn)自定義身份驗證和授權(quán)。
Lambda 在經(jīng)過認證和授權(quán)之后會向 API 網(wǎng)關(guān)返回兩種類型的策略:
- 允許
- 否定
用于業(yè)務邏輯的 Lambda 函數(shù)
Lambda 函數(shù)用于實現(xiàn)業(yè)務邏輯、調(diào)用其他 lambda 函數(shù)、下游服務和數(shù)據(jù)庫。
其他 AWS 服務
- CloudWatch – 使用 AWS CloudWatch 監(jiān)控您的應用程序并存儲日志、儀表板和警報,這些也可以為報告和主動監(jiān)控而創(chuàng)建。
- SQS 和 SNS – 使用 AWS SQS 存儲異步消息,使用 SNS 將通知推送到 lambda 函數(shù)。
- Dynamo DB 或 RDS – 應用程序數(shù)據(jù)庫
- IAM – 身份和訪問管理服務,用于定義 AWS 資源的角色和訪問權(quán)限
- VPC、子網(wǎng)、安全組– VPC 在安全網(wǎng)絡中隔離 AWS 資源,子網(wǎng)將 VPC 分段以便組織,安全組使用防火墻規(guī)則控制流量。
架構(gòu)和數(shù)據(jù)流
下面的架構(gòu)圖描述了所使用的 AWS 服務集、數(shù)據(jù)流以及與其他服務的集成。
從高層次上講,客戶端向 Amazon API Gateway 發(fā)送 HTTP 請求,從而觸發(fā) AWS Lambda 函數(shù)。Lambda 函數(shù)處理請求,在需要時與其他 AWS 服務交互(例如用于數(shù)據(jù)存儲的 DynamoDB),并將響應返回給 API Gateway,然后 API Gateway 將響應發(fā)送給客戶端。
數(shù)據(jù)流步驟
- 用戶使用有效的授權(quán)標頭(即JWT 令牌、API 密鑰等)向 API 發(fā)出 HTTP 請求。
- Route 53 將請求轉(zhuǎn)發(fā)到 API 網(wǎng)關(guān),該請求將被 Web 應用程序防火墻攔截。
- Web 應用程序防火墻配置了不同的規(guī)則來保護應用程序免受 Web 攻擊。如果防火墻檢測到任何此類惡意請求,它會立即阻止該請求,否則將其轉(zhuǎn)發(fā)到 API 網(wǎng)關(guān)。
- 配置了 API Gateway 的 Lambda Authorizer 會攔截請求并對用戶請求進行身份驗證和授權(quán)。如果用戶被授權(quán)訪問底層資源,則請求將被轉(zhuǎn)發(fā)到前端控制器 lambda。
- 前端控制器 lambda 將請求委托給相應的服務 lambda 函數(shù)。
- 根據(jù)業(yè)務邏輯,服務 lambda 處理請求并向客戶端返回適當?shù)捻憫?/li>
- 在處理請求時,服務 lambda 函數(shù)可以調(diào)用下游 REST API 或數(shù)據(jù)庫。服務 lambda 函數(shù)還可以監(jiān)聽 SNS 隊列或訂閱 SNS。
- 身份和訪問管理 (IAM) 服務用于定義資源角色并提供對這些角色的訪問。
- 所有資源都會將應用程序日志推送到 CloudWatch 以進行監(jiān)控和故障排除。
典型用例
- 無服務器架構(gòu)可用于需要實時處理數(shù)據(jù)的事件驅(qū)動應用程序,例如數(shù)據(jù)流或通知處理。
- 微服務可以在無服務器架構(gòu)上獨立、隔離地實現(xiàn)和部署,以實現(xiàn)更好的可擴展性。
- 處理計劃任務的應用程序可以在無服務器架構(gòu)上實現(xiàn)和部署,并可根據(jù)特定時間觸發(fā)。
- 所有以成本為關(guān)鍵因素的用例都可以采用無服務器架構(gòu)。
基礎設施配置和部署
在企業(yè)中,除了生產(chǎn)環(huán)境之外,還有多個可用于開發(fā)和測試的環(huán)境。在不同的環(huán)境中創(chuàng)建相同的資源集并手動跟蹤配置更改可能是一項艱巨的任務,并且可能會引入錯誤。
為了解決這個問題,可以使用Terraform(基礎設施即代碼)。Terraform 有助于將資源從一個環(huán)境復制到另一個環(huán)境。除此之外,它還可以跟蹤基礎設施的狀態(tài)。
任何CI/CD工具(例如Jenkins或GitLab )都可以使用 Terraform 自動執(zhí)行部署。
結(jié)論
總之,利用 AWS 無服務器架構(gòu)開發(fā) REST API 在可擴展性、成本效益和易于管理方面具有多種優(yōu)勢。
通過采用無服務器方法,開發(fā)人員可以更加專注于構(gòu)建強大的 API,而無需管理服務器的開銷。AWS Lambda 的事件驅(qū)動模型允許無縫擴展,確保您的 API 可以有效處理不同的工作負載。
原文鏈接:https://dzone.com/articles/api-implementation-on-aws-serverless-architecture
我們有何不同?
API服務商零注冊
多API并行試用
數(shù)據(jù)驅(qū)動選型,提升決策效率
查看全部API→
??
熱門場景實測,選對API
#AI文本生成大模型API
對比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對比試用API
限時免費