

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

# 除錯無伺服器應用程式的組態選項
<a name="serverless-apps-run-debug-config-ref"></a>

當您開啟 `launch.json` 檔案來編輯偵錯組態時，您可以使用 VS Code [IntelliSense](https://code.visualstudio.com/docs/editor/intellisense) 功能來檢視和自動完成有效的屬性。若要在編輯器中觸發 IntelliSense，請按 **Ctrl**\+**Spacebar**。

![使用 VS Code 的 IntelliSense 尋找和完成有效的偵錯屬性。](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/images/Intellisense_autocomplete.gif)


IntelliSense 可讓您尋找和定義直接叫用 Lambda 函數或使用 AWS SAM 範本的屬性。您也可以定義 `"lambda"`( 函數的執行方式）、 `"sam"`( CLI AWS SAM 如何建置應用程式） 和 `"aws"`( AWS 連線資訊的提供方式） 的屬性。


**AWS SAM：直接 Lambda 處理常式調用 / 範本型 Lambda 調用**  

|  屬性 | Description | 
| --- | --- | 
| `type` | 指定用於管理啟動組態的延伸模組。一律將 `aws-sam` 設定為使用 AWS SAM CLI 在本機建置和偵錯。 | 
| `name` | 指定方便識讀的名稱，讓它顯示在 **Debug launch configuration** (除錯啟動組態清單) 中。 | 
| `request` | 指定要經由指定延伸模組執行的組態類型 (`aws-sam`)。一律設為 `direct-invoke` 來啟動 Lambda 函數。 | 
| `invokeTarget` | 指定叫用資源的進入點。<br />如要直接叫用 Lambda 函數，請設定以下 `invokeTarget` 欄位的值：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html)<br />若要使用 AWS SAM 範本叫用 Lambda 資源，請為下列`invokeTarget`欄位設定值：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html) | 


**Lambda (`"lambda"`) 屬性**  

|  屬性 | Description | 
| --- | --- | 
| `environmentVariables` | 將操作參數傳遞至 Lambda 函數。例如，如果您要寫入 Amazon S3 儲存貯體，而不是硬式編碼寫入的儲存貯體名稱，請將儲存貯體名稱設定為環境變數。 為無伺服器應用程式指定環境變數時，您必須將組態新增至 AWS SAM 範本 (`template.yaml`) 和 `launch.json` 檔案。 <br />範本中 AWS SAM 環境變數的格式範例： <pre>Resources:<br /> HelloWorldFunction:<br /> Type: AWS::Serverless::Function<br /> Properties:<br />   CodeUri: hello-world/<br />   Handler: app.lambdaHandlerN10<br />   Runtime: nodejs10.x<br />   Environment:<br />     Variables:<br />       SAMPLE1: Default Sample 1 Value</pre> <br />`launch.json` 檔案中環境變數的格式範例： <pre>"environmentVariables": {<br />    "SAMPLE1": "My sample 1 value"<br /> }</pre>  | 
| `payload` | 針對您提供給 Lambda 函數作為輸入的事件酬載提供兩個選項。[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html) | 
| `memoryMB` | 指定為執行調用 Lambda 函數而提供的記憶體 MB (MB)。 | 
| `runtime` | 指定 Lambda 函數使用的執行時間。如需詳細資訊，請參閱 [AWS Lambda 執行時間](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)。 | 
| `timeoutSec` | 設定除錯工作階段逾時之前的可用時間 (以秒為單位)。 | 
| `pathMappings` | 指定本機程式碼與其在容器中執行位置的相對位置。<br />根據預設， Toolkit for VS 程式碼會`localRoot`設定為本機工作區中的 Lambda 函數程式碼根目錄，以及`remoteRoot`設定為 `/var/task`，這是在 Lambda 中執行程式碼的預設工作目錄。如果在 Dockerfile 中或使用 CloudFormation 範本檔案中的 `WorkingDirectory` 參數變更工作目錄，必須至少指定一個`pathMapping`項目，以便偵錯工具能夠成功將本機設定的中斷點映射到 Lambda 容器中執行的程式碼。<br />`pathMappings` `launch.json` 檔案中的 格式化範例：<pre>"pathMappings": [<br />    {<br />        "localRoot": "{{${workspaceFolder}/sam-app/HelloWorldFunction}}",<br />        "remoteRoot": "{{/var/task}}"<br />    }<br />]</pre><br />警告：[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-config-ref.html) | 

Toolkit for VS 程式碼使用 AWS SAM CLI 在本機建置和偵錯無伺服器應用程式。您可以使用 `launch.json` 檔案中`"sam"`組態的屬性來設定 AWS SAM CLI 命令的行為。


**AWS SAM CLI (`"sam"`) 屬性**  

| 屬性 |  Description |  預設值 | 
| --- | --- | --- | 
| `buildArguments` | 設定 `sam build` 命令建置 Lambda 來源程式碼的方式。若要檢視建置選項，請參閱 *AWS Serverless Application Model 開發人員指南*中的 [SAM 建置](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-build.html)。 | 空字串 | 
| `containerBuild` | 指出是否要在類似 Lambda 的 Docker 容器中建置函數。 | `false` | 
| `dockerNetwork` | 指定 Lambda Docker 容器應連線的現有 Docker 網路名稱或 ID，以及預設橋接網路。如果沒有指定，則 Lambda 容器只會連線到預設的橋接 Docker 網路。 | 空字串 | 
| `localArguments` | 指定其他本機調用引數。 | 空字串 | 
| `skipNewImageCheck` | 指定命令是否應略過將 Lambda 執行階段的最新 Docker 映像提取下來的動作。 | `false` | 
| `template` | 使用參數來輸入客戶值來自訂您的 AWS SAM 範本。如需更多詳細資訊，請參閱 [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) 使用者指南*中的AWS CloudFormation 參數*部分。 | `"parameters":{}` | 


**AWS 連線 (`"aws"`) 屬性**  

| 屬性 | Description | 預設值 | 
| --- | --- | --- | 
| `credentials` | 從登入資料檔案選取特定設定檔 （例如 `profile:default`) 以取得 AWS 登入資料。 | 現有共用組態檔案或共用 AWS 登入資料檔案提供給 Toolkit for VS Code 的登入資料。 [AWSAWS](setup-credentials.md) | 
| `region` | 設定服務的 AWS 區域 （例如 us-east-1)。 | 與作用中登入資料設定檔相關聯的預設 AWS 區域。 | 

## 範例：範本啟動組態
<a name="example-template"></a>

以下是 AWS SAM 範本目標的啟動組態檔案範例：

```
{
    "configurations": [
        {
            "type": "aws-sam",
            "request": "direct-invoke",
            "name": "my-example:HelloWorldFunction",
            "invokeTarget": {
                "target": "template",
                "templatePath": "template.yaml",
                "logicalId": "HelloWorldFunction"
            },
            "lambda": {
                "payload": {},
                "environmentVariables": {}
            }
        }
    ]
}
```

## 範例：程式碼啟動組態
<a name="example-code"></a>

以下是 Lambda 函數目標的啟動組態檔案範例：

```
{
    "configurations": [
        {
            "type": "aws-sam",
            "request": "direct-invoke",
            "name": "my-example:app.lambda_handler (python3.7)",
            "invokeTarget": {
                "target": "code",
                "projectRoot": "hello_world",
                "lambdaHandler": "app.lambda_handler"
            },
            "lambda": {
                "runtime": "python3.7",
                "payload": {},
                "environmentVariables": {}
            }
        }
    ]
}
```