

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

# sam local invoke
<a name="sam-cli-command-reference-sam-local-invoke"></a>

此頁面提供 AWS Serverless Application Model 命令列界面 (AWS SAM CLI) `sam local invoke`子命令的參考資訊。
+ 如需 的簡介 AWS SAM CLI，請參閱 [什麼是 AWS SAM CLI？](what-is-sam-overview.md#what-is-sam-cli)
+ 如需使用 AWS SAM CLI `sam local invoke` 子命令的文件，請參閱 [使用 進行測試的簡介 sam local invoke](using-sam-cli-local-invoke.md)。

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

**注意**  
不建議在不受信任的程式碼中使用 SAM CLI 的本機調用功能。若要與本機環境完全隔離，請直接在 Lambda 服務中執行程式碼。

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

## Usage
<a name="ref-sam-cli-local-invoke-usage"></a>

```
$ sam local invoke <arguments> <options>
```

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

## 引數
<a name="ref-sam-cli-local-invoke-args"></a>

**Resource ID (資源 ID)**  <a name="ref-sam-cli-local-invoke-args-resource-id"></a>
要叫用的 Lambda 函數 ID。  
此為選用引數。如果您的應用程式包含單一 Lambda 函數，CLI AWS SAM 會叫用它。如果您的應用程式包含多個函數，請提供要叫用的函數 ID。  
*有效值*：資源的邏輯 ID 或資源 ARN。

## 選項
<a name="ref-sam-cli-local-invoke-options"></a>

`--add-host LIST`  <a name="ref-sam-cli-local-invoke-options-add-host"></a>
將主機名稱傳遞至 Docker 容器主機檔案的 IP 地址映射。此參數可以多次傳遞。  

**Example**  
範例：`--add-host example.com:127.0.0.1`

`--beta-features | --no-beta-features`  <a name="ref-sam-cli-local-invoke-options-beta-features"></a>
允許或拒絕 Beta 版功能。

`--config-env TEXT`  <a name="ref-sam-cli-local-invoke-options-config-env"></a>
在要使用的組態檔案中指定預設參數值的環境名稱。預設值為「預設值」。如需關於組態檔案的詳細資訊，請參閱 [AWS SAM CLI 組態檔案](serverless-sam-cli-config.md)。

`--config-file PATH`  <a name="ref-sam-cli-local-invoke-options-config-file"></a>
組態檔案的路徑和檔案名稱，其中包含要使用的預設參數值。專案目錄根目錄中的預設值為「`samconfig.toml`」。如需關於組態檔案的詳細資訊，請參閱 [AWS SAM CLI 組態檔案](serverless-sam-cli-config.md)。

`--container-env-vars`  <a name="ref-sam-cli-local-invoke-options-container-env-vars"></a>
（選用） 在本機偵錯時，將環境變數傳遞至 Lambda 函數映像容器。

`--container-host TEXT`  <a name="ref-sam-cli-local-invoke-options-container-host"></a>
本機模擬 Lambda 容器的主機。預設值為 `localhost`。如果您想要在 macOS 的 Docker 容器中執行 AWS SAM CLI ，您可以指定 `host.docker.internal`。如果您想要在與 不同的主機上執行容器 AWS SAM CLI，您可以指定遠端主機的 IP 地址。

`--container-host-interface TEXT`  <a name="ref-sam-cli-local-invoke-options-container-host-interface"></a>
容器連接埠應繫結之主機網路介面的 IP 地址。預設值為 `127.0.0.1`。使用 `0.0.0.0` 繫結至所有介面。

`--debug`  <a name="ref-sam-cli-local-invoke-options-debug"></a>
開啟偵錯記錄以列印 產生的偵錯訊息 AWS SAM CLI，並顯示時間戳記。

`--debug-args TEXT`  <a name="ref-sam-cli-local-invoke-options-debug-args"></a>
要傳遞給偵錯工具的其他引數。

`--debug-port, -d TEXT`  <a name="ref-sam-cli-local-invoke-options-debug-port"></a>
指定時， 會以偵錯模式啟動 Lambda 函數容器，並在本機主機上公開此連接埠。

`--debugger-path TEXT`  <a name="ref-sam-cli-local-invoke-options-debugger-path"></a>
掛載至 Lambda 容器之偵錯工具的主機路徑。

`--docker-network TEXT`  <a name="ref-sam-cli-local-invoke-options-docker-network"></a>
Lambda Docker 容器應連線的現有 Docker 網路的名稱或 ID，以及預設橋接網路。如果未指定，Lambda 容器只會連線到預設橋接器 Docker 網路。

`--docker-volume-basedir, -v TEXT`  <a name="ref-sam-cli-local-invoke-options-docker-volume-basedir"></a>
 AWS SAM 檔案存在的基礎目錄位置。如果 Docker 在遠端機器上執行，您必須掛載 AWS SAM Docker 機器上檔案所在的路徑，並修改此值以符合遠端機器。

`--durable-execution-name TEXT`  <a name="ref-sam-cli-local-invoke-options-durable-execution-name"></a>
持久性執行的名稱 （僅適用於持久性函數）

`--env-vars, -n PATH`  <a name="ref-sam-cli-local-invoke-options-env-vars"></a>
包含 Lambda 函數環境變數值的 JSON 或 `.env` 檔案。系統會自動偵測檔案格式。如需環境變數檔案的詳細資訊，請參閱 [環境變數檔案](serverless-sam-cli-using-invoke.md#serverless-sam-cli-using-invoke-environment-file)。

`--event, -e PATH`  <a name="ref-sam-cli-local-invoke-options-event"></a>
包含事件資料的 JSON 檔案，會在叫用時傳遞至 Lambda 函數。如果您未指定此選項，則不會假設任何事件。若要從 輸入 JSON`stdin`，您必須傳入值 '-'。如需不同 AWS 服務的事件訊息格式詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[使用其他 服務](https://docs.aws.amazon.com/lambda/latest/dg/lambda-services.html)。

`--force-image-build`  <a name="ref-sam-cli-local-invoke-options-force-image-build"></a>
指定 AWS SAM CLI是否應重建用於使用 layer 叫用 Lambda 函數的映像。

`--help`  <a name="ref-sam-cli-local-invoke-options-help"></a>
顯示此訊息並結束。

`--hook-name TEXT`  <a name="ref-sam-cli-local-invoke-options-hook-name"></a>
用於擴展 AWS SAM CLI功能的勾點名稱。  
接受的值：`terraform`。

`--invoke-image TEXT`  <a name="ref-sam-cli-local-invoke-options-invoke-image"></a>
您要用於本機函數調用之容器映像的 URI。根據預設， 會從 Amazon ECR Public AWS SAM 提取容器映像 （列於 )[的影像儲存庫 AWS SAM](serverless-image-repositories.md)。使用此選項從另一個位置提取映像。  
例如 `sam local invoke MyFunction --invoke-image amazon/aws-sam-cli-emulation-image-python3.8`。

`--layer-cache-basedir DIRECTORY`  <a name="ref-sam-cli-local-invoke-options-layer-cache-basedir"></a>
指定下載範本所用層的基礎目錄位置。

`--log-file, -l TEXT`  <a name="ref-sam-cli-local-invoke-options-log-file"></a>
要傳送執行期日誌的日誌檔案。

`--mount-symlinks`  <a name="ref-sam-cli-local-invoke-options-mount-symlinks"></a>
確保 AWS SAM CLI 一律掛載檔案中存在的符號連結，以建置或叫用。這僅適用於頂層目錄上的符號連結 （也就是直接在函數根目錄上的符號連結）。根據預設，符號連結不會掛載，除了在 NodeJS `node_modules`中使用 `build-in-source` 時需要的符號連結。

`--no-event`  <a name="ref-sam-cli-local-invoke-options-no-event"></a>
使用空白事件叫用 函數。

`--no-memory-limit`  <a name="ref-sam-cli-local-invoke-options-no-memory-limit"></a>
在本機調用期間移除容器中的記憶體限制，即使 AWS SAM 範本中已設定記憶體也一樣。

`--parameter-overrides`  <a name="ref-sam-cli-local-invoke-options-parameter-overrides"></a>
包含 CloudFormation 參數的字串會覆寫編碼為鍵值對的字串。使用與 AWS Command Line Interface () 相同的格式AWS CLI。格式 AWS SAM CLI是明確的索引鍵和值關鍵字，每個覆寫都會以空格分隔。以下是兩個範例：  
+ `--parameter-overrides ParameterKey=hello,ParameterValue=world`
+ `--parameter-overrides ParameterKey=hello,ParameterValue=world ParameterKey=example1,ParameterValue=example2 ParameterKey=apple,ParameterValue=banana`

`--profile TEXT`  <a name="ref-sam-cli-local-invoke-options-profile"></a>
從您的登入資料檔案中取得 AWS 登入資料的特定設定檔。

`--region TEXT`  <a name="ref-sam-cli-local-invoke-options-region"></a>
 AWS 要部署的區域。例如 us-east-1。

`--runtime TEXT`  <a name="ref-sam-cli-local-invoke-options-runtime"></a>
使用指定的執行時間在本機叫用 Lambda 函數。這會覆寫 `template.yml` 檔案中定義的執行時間。這也允許使用不同的執行時間測試 Lambda 函數，而無需修改原始函數組態。

`--save-params`  <a name="ref-sam-cli-local-invoke-options-save-params"></a>
將您在命令列提供的參數儲存至 AWS SAM 組態檔案。

`--shutdown`  <a name="ref-sam-cli-local-invoke-options-shutdown"></a>
在調用完成後模擬關機事件，以測試關機行為的延伸處理。

`--skip-prepare-infra`  <a name="ref-sam-cli-local-invoke-options-skip-prepare-infra"></a>
如果未進行任何基礎設施變更，請略過準備階段。使用 搭配 `--hook-name`選項。

`--skip-pull-image`  <a name="ref-sam-cli-local-invoke-options-skip-pull-image"></a>
根據預設， 會 AWS SAM CLI檢查 Lambda 最新的遠端執行期環境，並自動更新本機映像以保持同步。  
指定此選項可略過提取 Lambda 執行時間環境的最新Docker映像。

`--template, -t PATH`  <a name="ref-sam-cli-local-invoke-options-template"></a>
 AWS SAM 範本檔案。  
此選項與 不相容`--hook-name`。  
如果您指定此選項， 只會 AWS SAM 載入範本及其指向的本機資源。

`--tenant-id TEXT`  <a name="ref-sam-cli-local-invoke-options-tenancyconfig"></a>
多租用戶 Lambda 函數的租用戶 ID。用來確保不同租用戶之間的運算隔離。叫用使用租戶隔離模式設定的函數時為必要。

`--terraform-plan-file`  <a name="ref-sam-cli-local-invoke-options-terraform-plan-file"></a>
搭配 使用 時，本機Terraform計劃檔案的 AWS SAM CLI相對或絕對路徑Terraform Cloud。此選項需要`--hook-name`將 設定為 `terraform`。

## 範例
<a name="sam-cli-command-reference-sam-local-invoke-examples"></a>

下列範例使用產生的事件進行本機測試，方法是使用`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
```