本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 本機叫用 Lambda 函數 AWS SAM
在雲端測試或部署之前,在本機叫用 Lambda 函數可能有各種好處。它可讓您更快地測試函數的邏輯。本機測試會先降低在雲端或在部署期間測試時發現問題的可能性,這可協助您避免不必要的成本。此外,本機測試可讓您更輕鬆地進行除錯。
您可以使用 sam local invoke命令,並提供函數的邏輯 ID 和事件檔案,在本機叫用 Lambda 函數。 sam local invoke也接受 stdin 做為事件。如需事件的詳細資訊,請參閱《 AWS Lambda 開發人員指南》中的事件。如需不同 AWS 服務的事件訊息格式相關資訊,請參閱《 AWS Lambda 開發人員指南》中的搭配使用 AWS Lambda 與其他 服務。
注意
sam local invoke 命令對應至 AWS Command Line Interface (AWS CLI) 命令 aws lambda invoke
您必須在專案目錄中執行 sam local invoke命令,其中包含您要叫用的 函數。
範例:
# Invoking function with event file $ sam local invoke "Ratings" -e event.json # Invoking function with event via stdin $ echo '{"message": "Hey, are you there?" }' | sam local invoke --event - "Ratings" # For more options $ sam local invoke --help
環境變數檔案
若要在本機宣告覆寫範本中定義值的環境變數,請執行下列動作:
-
建立 JSON 檔案,其中包含要覆寫的環境變數。
-
使用
--env-vars引數覆寫範本中定義的值。
宣告環境變數
若要宣告全域套用至所有資源的環境變數,請指定如下所示的Parameters物件:
{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", "STAGE": "dev" } }
若要為每個資源宣告不同的環境變數,請為每個資源指定物件,如下所示:
{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "amzn-s3-demo-bucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }
為每個資源指定物件時,您可以使用下列識別符,依最高至最低優先順序列出:
-
logical_id -
function_id -
function_name -
完整路徑識別符
您可以使用上述兩種在單一檔案中同時宣告環境變數的方法。執行此操作時,您提供給特定資源的環境變數優先於全域環境變數。
將您的環境變數儲存在 JSON 檔案中,例如 env.json。
覆寫環境變數值
若要使用 JSON 檔案中定義的變數覆寫環境變數,請使用 --env-vars引數搭配 invoke或 start-api命令。例如:
sam local invoke --env-vars env.json
層
如果您的應用程式包含 layer,如需如何偵錯本機主機上 layer 問題的相關資訊,請參閱 透過 使用 Lambda 層提高效率 AWS SAM。
進一步了解
如需在本機叫用 函數的實作範例,請參閱 完成 AWS SAM 研討會中的單元 2 - 在本機執行