使用本機叫用 Lambda 函數 AWS SAM - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用本機叫用 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。您可以使用任一命令來叫用 Lambda 函數。

您必須在包含要叫用之函數的專案目錄中執行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

環境變數檔案

若要在本機宣告覆寫範本中定義的值的環境變數,請執行下列動作:

  1. 建立包含要覆寫之環境變數的 JSON 檔案。

  2. 使用引--env-vars數來覆寫範本中定義的值。

聲明環境變量

若要宣告全域套用至所有資源的環境變數,請指定如下所示的Parameters物件:

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", "STAGE": "dev" } }

要為每個資源聲明不同的環境變量,請為每個資源指定對象,如下所示:

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" } }

為每個資源指定物件時,您可以使用下列識別碼,以最高到最低的優先順序列出:

  1. logical_id

  2. function_id

  3. function_name

  4. 完整路徑識別碼

您可以使用上述兩種方法,在單一檔案中一起宣告環境變數。這樣做時,您為特定資源提供的環境變數優先於全域環境變數。

將環境變數儲存在 JSON 檔案中,例如env.json.

覆寫環境變數值

若要以 JSON 檔案中定義的環境變數覆寫環境變--env-vars數,請搭配invokestart-api指令使用引數。例如:

sam local invoke --env-vars env.json

圖層

如果您的應用程式包含層,如需有關如何偵錯本機主機上層問題的資訊,請參閱使用 Lambda 層來提高效率 AWS SAM

進一步了解

如需在本機叫用函式的實際操作範例,請參閱完整 AWS SAM 研討會中的單元 2-在本機執行