

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

# 使用 進行測試的簡介 sam local start-lambda
<a name="using-sam-cli-local-start-lambda"></a>

使用 AWS SAM CLI子命令透過 AWS CLI 和 SDKs `sam local start-lambda` 叫用 Lambda 函數。此命令會啟動模擬 Lambda 的本機端點。
+ 如需 的簡介 AWS SAM CLI，請參閱 [什麼是 AWS SAM CLI？](what-is-sam-overview.md#what-is-sam-cli)
+ 如需`sam local start-lambda`命令選項的清單，請參閱 [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)。

**注意**  
`sam local start-lambda` 支援具有自動檢查點和重播功能的耐用函數。耐用的函數可與本機 Lambda 端點無縫搭配使用。

## 先決條件
<a name="using-sam-cli-local-start-api-prerequisites"></a>

若要使用 `sam local start-lambda`，請完成下列步驟來 AWS SAM CLI安裝 ：
+ [AWS SAM 先決條件](prerequisites.md).
+ [安裝 AWS SAM CLI](install-sam-cli.md).

使用 之前`sam local start-lambda`，我們建議您對以下內容有基本的了解：
+ [設定 AWS SAM CLI](using-sam-cli-configure.md).
+ [在 中建立您的應用程式 AWS SAM](using-sam-cli-init.md).
+ [使用 建置 簡介 AWS SAM](using-sam-cli-build.md).
+ [使用 部署簡介 AWS SAM](using-sam-cli-deploy.md).

## 使用 sam 本機 start-lambda
<a name="using-sam-cli-local-start-lambda-use"></a>

當您執行 時`sam local start-lambda`， AWS SAM CLI會假設您目前的工作目錄是專案的根目錄。 AWS SAM CLI 會先尋找`.aws-sam`子資料夾中`template.[yaml|yml]`的檔案。如果找不到， AWS SAM CLI會在您目前的工作目錄中尋找`template.[yaml|yml]`檔案。

**使用 sam local start-lambda**

1. 從專案的根目錄中，執行下列動作：

   ```
   $ sam local start-lambda <options>
   ```

1. 會在本機Docker容器中建置 Lambda AWS SAM CLI函數。然後，它會將本機地址輸出到您的 HTTP 伺服器端點。以下是範例：

   ```
   $ sam local start-lambda
   Initializing the lambda functions containers.
   Local image is up-to-date
   Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64.
   
   Mounting /Users/.../sam-app/hello_world as /var/task:ro,delegated, inside runtime container
   Containers Initialization is done.
   Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint.
   2023-04-13 07:25:43 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
    * Running on http://127.0.0.1:3001
   2023-04-13 07:25:43 Press CTRL+C to quit
   ```

1. 使用 AWS CLI 或 SDKs 在本機叫用 Lambda 函數。

   以下是使用 的範例 AWS CLI：

   ```
   $ aws lambda invoke --function-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt
       
   StatusCode: 200
   (END)
   ```

   以下是使用適用於 的 AWS SDK 的範例Python：

   ```
   import boto3
   from botocore.config import Config
   from botocore import UNSIGNED
   
   lambda_client = boto3.client('lambda',
                                endpoint_url="http://127.0.0.1:3001",
                                use_ssl=False,
                                verify=False,
                                config=Config(signature_version=UNSIGNED,
                                              read_timeout=1,
                                              retries={'max_attempts': 0}
                                              )
                               )
   lambda_client.invoke(FunctionName="HelloWorldFunction")
   ```

## 選項
<a name="using-sam-cli-local-start-lambda-options"></a>

### 指定範本
<a name="using-sam-cli-local-start-lambda-options-template"></a>

若要指定範本供 AWS SAM CLI參考，請使用 `--template`選項。 AWS SAM CLI 只會載入該 AWS SAM 範本及其指向的資源。以下是範例：

```
$ sam local start-lambda --template myTemplate.yaml
```

如需 AWS SAM 範本的詳細資訊，請參閱 [AWS SAM 範本結構](sam-specification-template-anatomy.md)。

## 最佳實務
<a name="using-sam-cli-local-start-lambda-best"></a>

如果您的應用程式有執行 的`.aws-sam`目錄`sam build`，請務必`sam build`在每次更新函數程式碼時執行 。然後，執行 `sam local start-lambda`以在本機測試您更新的函數程式碼。

在部署到雲端之前，本機測試是快速開發和測試的絕佳解決方案。不過，本機測試不會驗證所有項目，例如雲端中資源之間的許可。盡可能在雲端測試您的應用程式。建議使用 [`sam sync`](using-sam-cli-sync.md) 來加速雲端測試工作流程。

## 進一步了解
<a name="using-sam-cli-local-start-lambda-learn"></a>

如需所有`sam local start-lambda`選項的清單，請參閱 [sam local start-lambda](sam-cli-command-reference-sam-local-start-lambda.md)。