本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在許多情況下,將功能分成不同的函數可以提供更好的效能,並讓應用程式更易於維護和擴展。但是,Lambda「單體」可能是遷移現有應用程式時有用的墊腳石。
單一 Lambda 函數應包含多少功能?
函數應在微服務中跨 AWS 服務的資料流程中執行單一任務。但是,如果功能任務太小,則可能會在應用程式中造成額外的延遲以及管理大量函數的開銷。函數的確切範圍取決於使用案例。
Lambda 型應用程式是否可以在多個區域中運作?
是,許多無伺服器服務為多個區域提供複寫和支援,包括 DynamoDB 和 Amazon S3。Lambda 函數可以作為部署管道的一部分部署在多個區域中,並且可以將 API Gateway 設定為支援此組態。請參閱此範例架構
Lambda 函數是否可以按定時排程執行?
是,您可以在 EventBridge 中使用規則的排程表達式,來觸發 Lambda 函數。此格式使用 cron 語法,並且可以設定一分鐘精細度。如需範例,請參閱此教學課程。
Lambda 函數如何在調用之間保留狀態?
在許多情況下,DynamoDB 資料表是理想的保留方式,因為其提供低延遲的資料存取,且可以使用 Lambda 服務進行擴展。如果您使用此服務,也可以將資料存放在 Amazon EFS for Lambda
哪些類型的工作負載適合事件驅動型架構?
事件驅動型架構使用網路跨不同系統進行通訊,這會引入可變延遲。對於需要極低延遲的工作負載 (例如即時交易系統),此設計可能不是最佳選擇。但是,對於高度可擴展和可用的工作負載,或是具有不可預測流量模式的工作負載,事件驅動型架構可以提供有效的方式來符合這些需求。
為什麼 Lambda 服務具有 15 分鐘的函數限制?
Lambda 函數的存在是為了處理事件,而且大多數事件都會快速處理 – 通常在大多數生產調用時不到 1 秒。函數的持續時間取決於處理一個事件所花費的時間。雖然部分運算密集型工作負載可能需要數分鐘時間,但很少需要 15 分鐘才能完成。
如果您發現需要更長的持續時間,請確保您的函數程式碼正在處理單一事件、執行單一任務,以及使用本文件中概述的最佳實務。在許多情況下,函數可以重新設計,以處理單一事件並減少處理所需的時間量。
為什麼有預留並行的函數無法擴展以滿足傳入流量?
Lambda 函數的預留並行也會充當最大容量值。提高並行總數的軟性限制不影響此行為。如果您需要具有預留並行的函數來處理更多流量,您可以更新預留並行值,這會增加函數的最大輸送量。
為什麼具有佈建並行的函數仍然遇到冷啟動?
您可以新增 X-Ray 監控到函數,以測量 Lambda 向上擴展時的冷啟動。使用佈建並行的函數不會顯示冷啟動行為,因為執行環境在調用之前已做好準備。不過,佈建並行必須套用至函數的特定版本或別名,而非 $LATEST 版本。如果您持續看到冷啟動行為,請確定您正在調用已設定佈建並行的別名版本。
我的 Lambda 函數最適合使用什麼執行時期?
Lambda 與您選擇的執行時間無關。對於簡單的函數,Python 和 Node.js 等解釋型語言可提供最快的效能。對於運算較複雜的函數,像 Java 這樣的編譯語言通常初始化速度較慢,但在 Lambda 處理程序中的執行速度很快。執行時間的選擇也會受到開發人員偏好和熟悉語言的影響。
如何確定 SDK 版本不變?
嵌入式 SDKs 可能會在 AWS 發行新服務和功能時變更,恕不另行通知。您可以使用所需的特定版本建立 Lambda 層,鎖定 SDK 的版本。如此一來,即使內嵌於服務中的版本變更,函數也會永遠使用層中的版本。
如何測試 Lambda 型應用程式能否擴展以滿足預期的流量?
為確定您的應用程式如預期擴展,請在開發程序中使用負載測試來模擬預期的流量水準。
哪些工作負載適合佈建並行?
佈建並行旨在讓函數具有兩位數毫秒回應時間。一般而言,互動式工作負載能從這項功能中獲益最多。這些是使用者啟動請求的應用程式 (例如 Web 和行動應用程式),對延遲最敏感。資料處理管道等非同步工作負載通常對延遲較不敏感,因此通常不需要佈建並行。
為什麼我的 Lambda 函數沒有記錄任何輸出?
如果 Lambda 函數未記錄至 CloudWatch,請先確保呼叫者正在調用此函數。檢查呼叫服務的日誌以及指出事件已觸發函數的任何 CloudWatch 指標。接著,檢查 CloudWatch Logs 中是否有此函數。所有 Lambda 函數都會記錄三行,即使函數的自訂程式碼中沒有其他明確日誌記錄亦如此:

如果儘管調用了此函數,但 CloudWatch 中沒有出現任何日誌記錄,請檢查此函數的許可。IAM 角色必須包含記錄許可,否則函數無法將日誌寫入服務。您可以將 AWSLambdaBasicExecutionRole 政策連接至函數的執行角色,以授予這些許可。