sam local invoke - AWS Serverless Application Model

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

sam local invoke

此頁面提供 AWS Serverless Application Model 命令列界面 (AWS SAMCLI) sam local invoke子命令的參考資訊。

sam local invoke 子命令會在本機啟動 AWS Lambda 函數的一次性調用。

注意

對於耐用的函數, sam local invoke支援使用自動檢查點和重播的狀態式執行。容器會在持久的函數執行期間持續執行,以處理狀態持久性和恢復。

用途

$ sam local invoke <arguments> <options>
注意

如果您在 AWS SAM 範本中定義了多個函數,請提供您要叫用的函數邏輯 ID。

引數

Resource ID (資源 ID)

要叫用的 Lambda 函數 ID。

此為選用引數。如果您的應用程式包含單一 Lambda 函數,CLI AWS SAM 會叫用它。如果您的應用程式包含多個函數,請提供要叫用的函數 ID。

有效值:資源的邏輯 ID 或資源 ARN。

選項

--add-host LIST

將主機名稱傳遞至 Docker 容器主機檔案的 IP 地址映射。此參數可以多次傳遞。

範例:--add-host example.com:127.0.0.1

--beta-features | --no-beta-features

允許或拒絕 Beta 版功能。

--config-env TEXT

在要使用的組態檔案中指定預設參數值的環境名稱。預設值為「預設值」。如需關於組態檔案的詳細資訊,請參閱 AWS SAMCLI 組態檔案

--config-file PATH

組態檔案的路徑和檔案名稱,其中包含要使用的預設參數值。專案目錄根目錄中的預設值為「samconfig.toml」。如需關於組態檔案的詳細資訊,請參閱 AWS SAMCLI 組態檔案

--container-env-vars

(選用) 在本機偵錯時,將環境變數傳遞至 Lambda 函數映像容器。

--container-host TEXT

本機模擬 Lambda 容器的主機。預設值為 localhost。如果您想要 AWS SAMCLI在 macOS 的 Docker 容器中執行 ,您可以指定 host.docker.internal。如果您想要在與 不同的主機上執行容器 AWS SAMCLI,您可以指定遠端主機的 IP 地址。

--container-host-interface TEXT

容器連接埠應繫結之主機網路介面的 IP 地址。預設值為 127.0.0.1。使用 0.0.0.0 繫結至所有介面。

--debug

開啟偵錯記錄以列印 AWS SAMCLI產生的偵錯訊息,並顯示時間戳記。

--debug-args TEXT

要傳遞給除錯器的其他引數。

--debug-port, -d TEXT

指定時, 會以偵錯模式啟動 Lambda 函數容器,並在本機主機上公開此連接埠。

--debugger-path TEXT

掛載至 Lambda 容器之偵錯工具的主機路徑。

--docker-network TEXT

Lambda Docker 容器應連線的現有 Docker 網路的名稱或 ID,以及預設橋接網路。如果未指定,Lambda 容器只會連線到預設橋接器 Docker 網路。

--docker-volume-basedir, -v TEXT

AWS SAM 檔案存在的基礎目錄位置。如果 Docker 在遠端機器上執行,您必須掛載 AWS SAM Docker 機器上檔案所在的路徑,並修改此值以符合遠端機器。

--durable-execution-name TEXT

持久性執行的名稱 (僅適用於持久性函數)

--env-vars, -n PATH

包含 Lambda 函數環境變數值的 JSON 檔案。如需環境變數檔案的詳細資訊,請參閱 環境變數檔案

--event, -e PATH

包含事件資料的 JSON 檔案,會在叫用時傳遞至 Lambda 函數。如果您未指定此選項,則不會假設任何事件。若要從 輸入 JSONstdin,您必須傳入值 '-'。如需不同 AWS 服務的事件訊息格式詳細資訊,請參閱《 AWS Lambda 開發人員指南》中的使用其他 服務

--force-image-build

指定 是否 AWS SAMCLI應重建用於使用 layer 調用 Lambda 函數的映像。

--help

顯示此訊息並結束。

--hook-name TEXT

用於擴展 AWS SAMCLI功能的勾點名稱。

接受的值:terraform

--invoke-image TEXT

您要用於本機函數調用之容器映像的 URI。根據預設, 會從 Amazon ECR Public AWS SAM 提取容器映像 (列於 )的影像儲存庫 AWS SAM。使用此選項從另一個位置提取映像。

例如 sam local invoke MyFunction --invoke-image amazon/aws-sam-cli-emulation-image-python3.8

--layer-cache-basedir DIRECTORY

指定下載範本所用層的基礎目錄位置。

--log-file, -l TEXT

要傳送執行期日誌的日誌檔案。

確保 AWS SAMCLI一律掛載檔案中存在的符號連結來建置或叫用。這僅適用於頂層目錄上的符號連結 (即直接在函數根目錄上的符號連結)。根據預設,不會掛載符號連結,除了在 NodeJS node_modules中使用 build-in-source 時需要的符號連結。

--no-event

使用空白事件叫用 函數。

--no-memory-limit

在本機調用期間移除容器中的記憶體限制,即使 AWS SAM 範本中已設定記憶體也一樣。

--parameter-overrides

包含 CloudFormation 參數的字串會覆寫編碼為鍵值對的字串。使用與 AWS Command Line Interface () 相同的格式AWS CLI。 AWS SAMCLI 格式是明確的索引鍵和值關鍵字,每個覆寫都會以空格分隔。以下是兩個範例:

  • --parameter-overrides ParameterKey=hello,ParameterValue=world

  • --parameter-overrides ParameterKey=hello,ParameterValue=world ParameterKey=example1,ParameterValue=example2 ParameterKey=apple,ParameterValue=banana

--profile TEXT

從您的登入資料檔案中取得 AWS 登入資料的特定設定檔。

--region TEXT

AWS 要部署的區域。例如 us-east-1。

--runtime TEXT

使用指定的執行時間在本機叫用 Lambda 函數。這會覆寫 template.yml 檔案中定義的執行時間。這也允許使用不同的執行時間測試 Lambda 函數,而無需修改原始函數組態。

--save-params

將您在命令列提供的參數儲存至 AWS SAM 組態檔案。

--shutdown

在調用完成後模擬關機事件,以測試關機行為的延伸處理。

--skip-prepare-infra

如果未進行任何基礎設施變更,請略過準備階段。使用 搭配 --hook-name選項。

--skip-pull-image

根據預設, 會 AWS SAMCLI檢查 Lambda 最新的遠端執行期環境,並自動更新本機映像以保持同步。

指定此選項可略過提取 Lambda 執行時間環境的最新Docker映像。

--template, -t PATH

AWS SAM 範本檔案。

此選項與 不相容--hook-name

注意

如果您指定此選項, 只會 AWS SAM 載入範本及其指向的本機資源。

--tenant-id TEXT

多租用戶 Lambda 函數的租用戶 ID。用來確保不同租用戶之間的運算隔離。叫用使用租戶隔離模式設定的函數時為必要。

--terraform-plan-file

AWS SAMCLI 搭配 使用 時,本機Terraform計劃檔案的相對或絕對路徑Terraform Cloud。此選項需要--hook-name將 設定為 terraform

範例

下列範例使用產生的事件進行本機測試,方法是使用s3.json事件在本機叫用 Lambda 函數

$ sam local invoke --event events/s3.json S3JsonLoggerFunction

下列範例 HelloWorldFunction使用 Python 3.11 執行時間測試函數

$ sam local invoke --runtime python3.11 HelloWorldFunction

下列範例會測試 HelloWorldFunction具有耐久執行名稱的函數

$ sam local invoke HelloWorldFunction --durable-execution-name my-execution