AWS于2022年4月推出了Lambda函數URL功能,這是一個為單個Lambda函數提供內置HTTPS端點的增強特性。根據Alex Casalboni的官方博文,該功能支持為任意Lambda函數配置HTTPS端點,并且可以選擇性地設置跨域資源共享(CORS)頭部。
簡而言之,Lambda函數URL允許開發(fā)者通過特定的URL直接調用Lambda函數,而無需依賴其他AWS服務。這種簡單直接的方式特別適合構建API。此外,開發(fā)者還可以根據需求配置CORS頭部,從而更靈活地處理跨域請求。
那么,既然已經有專門設計的Amazon API Gateway服務,為什么還要選擇Lambda函數URL呢?Serverless Guru的Jaymit Bhoraniya在其文章中,通過多維度對比分析了兩者的適用場景。筆者認為,Lambda函數URL的兩大核心優(yōu)勢如下:
這些特性使得Lambda函數URL成為構建單函數API的理想選擇。接下來,我們將深入探討這一模式的本質。
單函數API是一種由單個Lambda函數管理所有API端點的無服務器架構模式。與傳統(tǒng)的多函數API模式(即每個端點對應一個獨立函數)相比,單函數API呈現出完全不同的設計思路。
在單函數API模式中,所有路由邏輯和業(yè)務邏輯都由單個函數的代碼實現。這種模式的獨特優(yōu)勢包括:
然而,這種模式也需要特別注意一些潛在的挑戰(zhàn),例如CloudWatch日志存儲策略的優(yōu)化以及函數并發(fā)管理的特殊處理。
單函數API模式特別適合從微服務架構向無服務器架構的平滑遷移場景。通過這種模式,開發(fā)者可以更高效地管理API端點,同時降低運維復雜度。
通過將AWS CloudFront設為Lambda函數URL的主源,可以無縫集成AWS Shield和AWS WAF服務,從而顯著增強API的安全性和性能。根據Jaiganesh Girinathan與Samrat Karak的研究,這種架構還能充分利用CloudFront的內容分發(fā)網絡(CDN)功能,進一步優(yōu)化API的響應速度。
以下是前置CloudFront的主要優(yōu)勢:
此外,為進一步密鑰輪換機制**也是值得借鑒的安全實踐。
基于上述特性,本文推薦的架構方案是通過CloudFront分發(fā)整合Shield和WAF的單函數API模式。以下是該架構的示意圖:
這種基于Lambda函數URL和CloudFront的無服務器API架構,特別適合追求簡潔性、安全性和高性能的應用場景。通過消除對API Gateway的依賴,直接從CloudFront調用Lambda函數,可以顯著降低基礎設施成本。
典型的適用場景包括需要長時間處理但并發(fā)量較低的內部同步API。這種架構不僅簡化了API的安全性和性能提供了強有力的保障。
感謝您的閱讀,敬請期待系列文章的下一篇!
原文鏈接: https://www.serverlessguru.com/blog/building-a-secure-serverless-api-with-lambda-function-url-and-cloudfront-part-1