~ 知道多一些,能力也多一些 ~
AWS Lambda Extension 是一種用於擴充 AWS Lambda 函數功能的機制。它允許開發人員在 Lambda 函數的執行期間,以模組化的方式增強、監控和處理函數的行為。這使得開發人員能夠更靈活地擴充 Lambda 函數,以滿足不同的業務需求。
應用程式的執行環境在 Lambda 上對我們來是一個黑盒子,只能透過 AWS 官方的文件知道它包含了哪些 Runtime Environment,為了實現監控這個執行環境,AWS 特別做了 API 讓使用者使用,即 Extension API & Runtime API
增強函數功能:開發人員可以使用 Lambda Extension 在執行期間對函數進行功能增強。這包括在函數執行前後執行自定義代碼,處理特定的事件,或者在函數執行過程中修改請求和響應。
監控和日誌:通過 Lambda Extension,開發人員可以輕鬆地收集和監控函數的指標和日誌。這使得開發人員能夠更好地了解函數的行為和性能,並進行故障排除和優化。
外部資源訪問:Lambda Extension 可以與其他 AWS 服務或第三方服務進行集成,以擴充函數的能力。這允許開發人員在函數中訪問外部資源,例如數據庫、緩存或消息隊列,以實現更複雜的業務邏輯。
安全和授權:Lambda Extension 可以與 Lambda 函數共享安全上下文(Context),並繼承函數的授權設定。這確保了 Lambda Extension 在執行期間可以正確地操作函數和相關資源,同時符合相關的安全和授權要求。
日誌擴充(Logging Extensions):這類擴充用於收集和處理 Lambda 函數的日誌數據。它們可以捕獲函數的日誌事件,將其發送到外部日誌服務或進行其他處理操作。這有助於實現更高級的日誌管理和監控需求。
監控擴充(Monitoring Extensions):這類擴充用於監控 Lambda 函數的性能和行為。它們可以收集指標、追蹤函數的執行環境和資源使用情況,並提供監控警報和報告。這有助於及時發現函數問題並進行故障排除。
安全擴充(Security Extensions):這類擴充用於增強 Lambda 函數的安全性。它們可以執行安全掃描、漏洞檢測,或在函數執行期間應用額外的安全措施。這有助於保護函數免受潛在的安全風險。
工具擴充(Tooling Extensions):這類擴充用於提供額外的開發和運維工具支持。它們可以包括代碼分析工具、性能優化工具、測試工具等,以幫助開發人員更高效地開發和管理 Lambda 函數。
配置擴充(Configuration Extensions):這類擴充用於處理 Lambda 函數的配置和設置。它們可以從外部存儲中檢索配置數據,提供函數運行所需的參數。這使得函數的配置管理更加靈活和可擴充。
內部擴充(Internal Extensions):內部擴充是指與 Lambda 函數一起部署和運行的擴充。它們直接集成到 Lambda 運行時環境中,並與函數共享相同的運行時上下文。內部擴充可以通過 AWS 控制台、AWS CLI 或 AWS SDK 進行配置和管理。這使得內部擴充能夠與函數緊密協同工作,並與函數共享資源和安全設置。
外部擴充(External Extensions):外部擴充是指獨立運行並通過 Lambda Layers 連接到 Lambda 函數的擴充。它們運行在獨立的運行時環境中,並與函數進行通信。外部擴充可以通過 Lambda Layers 連接到函數,這使得開發人員可以輕鬆地將不同的擴充應用於多個函數中,從而實現代碼重用和組織管理。
安裝和配置 Lambda Extension:將開發的 Lambda Extension 安裝到 Lambda 函數中。這可以通過 AWS 控制台、AWS CLI 或 AWS SDK 進行配置。您需要指定擴充的 ARN(Amazon Resource Name)以及其他相關的配置選項。
執行 Lambda 函數:當 Lambda 函數觸發時會一併觸發Lambda Extension
Lambda 函數被觸發:Lambda 函數可以由多種事件觸發,例如 API 網關請求、S3 對象創建等。一旦觸發事件發生,Lambda 開始處理函數的執行。
Extension 初始化:在函數執行之前,Lambda Extension 會進行初始化。它會檢查是否有相關的擴展已經安裝並可用。如果擴展尚未安裝,Lambda 可能會自動下載和部署擴展。
函數執行前處理:Lambda Extension 可以在函數執行之前進行一些前置處理。這可能包括準備環境、設置上下文、載入配置等。擴展可以執行自定義的代碼或處理特定的事件。
Lambda 函數執行:Lambda 函數開始執行其主要的業務邏輯。這是函數實際處理觸發事件的地方。在此期間,Lambda Extension 可以以各種方式與函數進行交互,例如監控函數的執行、收集日誌、檢索外部資源等。
函數執行後處理:在 Lambda 函數執行完成後,Lambda Extension 可以執行一些後續處理。這可能包括清理資源、發送統計信息、觸發其他事件等。擴展可以處理函數的響應,並在需要時進一步修改或處理。
明天會通過一個實例來感受一下 extension 這個東西
https://docs.aws.amazon.com/lambda/latest/dg/lambda-extensions.html
https://aws.amazon.com/tw/blogs/compute/introducing-aws-lambda-extensions-in-preview/