

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

# AWS Lambda 函數
<a name="building-lambda"></a>

 AWS Toolkit for Visual Studio Code 提供 AWS Lambda 函數的全方位支援，可讓您直接從 VS Code 建置、測試和部署 。

Lambda 是一種全受管、事件驅動的運算服務，可自動執行您的程式碼，以回應來自 200 多個 AWS 服務和software-as-a-service(SaaS) 應用程式的事件。如需 AWS Lambda 服務的詳細資訊，請參閱 [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)開發人員指南。

下列主題說明如何在 AWS Lambda 中使用 AWS Toolkit for Visual Studio Code。

**Topics**
+ [使用 AWS Lambda 函數](remote-lambda.md)
+ [AWS Lambda console 至 IDE](lambda-console-ide.md)
+ [AWS Lambda 透過 LocalStack 支援](lambda-localstack.md)
+ [AWS Lambda 遠端偵錯](lambda-remote-debug.md)

# 使用 AWS Lambda 函數
<a name="remote-lambda"></a>

 AWS Toolkit for Visual Studio Code 可讓您在本機 VS Code 環境中使用 AWS Lambda 函數。透過 AWS Toolkit，您可以建立、編輯、測試、偵錯和部署 Lambda 函數，而無需離開 IDE。如需 AWS Lambda 服務的詳細資訊，請參閱 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html)開發人員指南。

下列各節說明如何開始使用 中的 Lambda 函數 AWS Toolkit for Visual Studio Code。

**注意**  
如果您已經使用 建立 Lambda 函數 AWS 管理主控台，則可以從 Toolkit 叫用它們。此外，您可以從 將 Lambda 函數開啟為 VS 程式碼 AWS Lambda console，如需其他資訊，請參閱本使用者指南中的 [AWS Lambda console 至 IDE](lambda-console-ide.md)主題。若要在 VS 程式碼中建立新的 Lambda 函數，請遵循本使用者指南中[建立新的無伺服器應用程式 （本機）](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/sam-get-started.html#serverless-apps-create) 主題中概述的步驟。

## 先決條件
<a name="remote-lambda-prereq"></a>

必須符合下列條件，才能在 AWS Toolkit 中使用 AWS Lambda 服務。
+ 已安裝最新版本的 AWS Toolkit for Visual Studio Code ，並使用 AWS 登入資料進行設定。
+ 您的 AWS Identity and Access Management (IAM) 受管許可和政策已設定為使用 AWS Lambda 服務。如需如何設定許可和建立相容 AWS 受管政策的詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的 [AWS Identity and Access ManagementAWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/security-iam.html)主題的 。
+ 您現有的 AWS Lambda 函數或 熟悉如何建立一個函數。如需如何建立 Lambda 函數的指示，請參閱《 *AWS Lambda 開發人員指南*》中的[建立您的第一個 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html)主題。

## 叫用 Lambda 函數
<a name="invoke-lam-func"></a>

若要從 AWS 您的帳戶叫用 Lambda 函數至 VS 程式碼，請完成下列步驟。

1. 從 AWS Toolkit for Visual Studio Code中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器展開 **Lambda** 以檢視您的 Lambda 資源。

1. 開啟您要叫用之 Lambda 函數的內容選單 （按一下滑鼠右鍵），然後選擇**在雲端叫用**，或在**雲端圖示中選擇叫用**，以在 VS 程式碼中開啟**遠端叫用組態**選單。

1. 從**遠端調用組態**功能表中，指定您的**承載**設定，並新增事件所需的任何其他資訊。
**注意**  
當您在 AWS 瀏覽器**中選擇在雲端叫用時，第一個叫用**程序可能會立即開始執行。輸出會顯示在 VS 程式碼終端機的 **OUTPUT** 索引標籤中。

1. 選擇**遠端調用**按鈕來調用您的函數，輸出會顯示在 VS 程式碼終端機的**輸出**索引標籤中。

## 刪除 Lambda 函式
<a name="delete-lambda"></a>

若要刪除 Lambda 函數，請完成下列程序。

**警告**  
請勿使用此程序刪除與 [CloudFormation](https://docs.aws.amazon.com/cloudformation/) 相關聯的 Lambda 函數。這些函數必須透過您的 CloudFormation 堆疊刪除。

1. 從 AWS Toolkit for Visual Studio Code中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器展開 **Lambda** 以檢視您的 Lambda 資源。

1. 在要刪除的 Lambda 函數上按一下滑鼠右鍵，然後選擇**刪除**。

1. 出現提示時，請確認您想要刪除函數。

刪除函數之後，它不會再列在 AWS 瀏覽器中。

## 下載 Lambda 函式
<a name="import-lambda"></a>

您可以從遠端 Lambda 函數下載程式碼到 VS 程式碼工作區，以進行編輯和偵錯。

**注意**  
若要下載 Lambda 函數，您必須在具有可存取資料夾的 VS 程式碼工作區中工作，且 AWS Toolkit 僅支援使用 Node.js 和 Python 執行時間搭配 Lambda 函數的此功能。

1. 從 AWS Toolkit for Visual Studio Code中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器展開 **Lambda** 以檢視您的 Lambda 資源。

1. 在您要下載的 Lambda 函數上按一下滑鼠右鍵，然後選擇**下載**。

1. 您的 Lambda 函數會在 VS 程式碼編輯器中開啟，並在下載完成時顯示在 AWS 瀏覽器中。 AWS Toolkit 也會在 VS Code 執行面板中建立*啟動組態*，可讓您使用 在本機執行和偵錯 Lambda 函數 AWS Serverless Application Model。如需使用 的詳細資訊 AWS SAM，請參閱 [從範本執行和偵錯無伺服器應用程式 （本機）](sam-get-started.md#serverless-apps-debug)。

## 部署新 Lambda 函數的更新
<a name="deploy-lambda"></a>

您可以從本機機器上未指定的暫時位置部署更新至新的 Lambda 函數。

**注意**  
當您的 lambda 檔案有未部署的變更時，您會透過位於 VS 程式碼編輯器和 AWS 瀏覽器中修改檔案旁邊的 **M** 圖示收到通知。

**從 VS 程式碼編輯器部署**

1. 在 VS 程式碼編輯器中從 Lambda 函數開啟檔案，然後變更檔案。

1. 從 VS Code 主功能表手動儲存或按 **option\$1s**(Mac) **ctrl\$1s** (Windows)。

1. VS Code 會自動提示您將變更部署到雲端，選擇**部署**按鈕以確認部署。

1. VS Code 會更新您部署的狀態，並在程序完成時通知您。

**從 AWS Explorer 部署**

1. 在 VS 程式碼編輯器中從 Lambda 函數開啟檔案，然後變更檔案。

1. 從 AWS Toolkit 中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器中，使用您要部署變更的 Lambda 函數展開 AWS 區域。

1. 從 AWS 區域展開 Lambda 並導覽您要部署變更的函數。

1. 從函數旁的快速選單中，選擇**儲存並部署程式碼**圖示。

1. VS Code 會更新您部署的狀態，並在程序完成時通知您。

## 上傳現有 Lambda 函數的更新
<a name="upload-lambda"></a>

下列程序說明如何上傳對現有 Lambda 函數所做的本機變更。此功能支援使用任何 Lambda 支援的執行時間上傳。

**警告**  
上傳 Lambda 函數之前，請注意下列事項：  
以這種方式更新程式碼不會使用 AWS SAM CLI 進行部署或建立 CloudFormation 堆疊
Toolkit AWS 不會驗證程式碼。在上傳任何變更至雲端之前，驗證您的程式碼並測試您的函數 (s)。

**上傳 Zip 封存檔**

1. 從 AWS Toolkit for Visual Studio Code中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器展開 **Lambda** 以檢視您的 Lambda 資源。

1. 在您要上傳變更的 Lambda 函數上按一下滑鼠右鍵，然後選擇**上傳 Lambda...** 以開啟**選取上傳類型**功能表。

1. 選擇 **ZIP Archive** 以在`ZIP Archive`本機目錄中尋找 。

1. 出現提示時，請確認上傳以開始上傳選取的 `ZIP Archive`。

1. 您的上傳狀態會顯示在 VS 程式碼中，上傳程序完成時會通知您。

**上傳目錄而不建置**

1. 從 AWS Toolkit for Visual Studio Code中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器展開 **Lambda** 以檢視您的 Lambda 資源。

1. 在您要上傳變更的 Lambda 函數上按一下滑鼠右鍵，然後選擇**上傳 Lambda...** 以開啟**選取上傳類型**功能表。

1. 選擇**目錄**以繼續到**建置目錄**畫面。

1. 從**建置目錄**畫面中，選擇**否**以選擇要上傳的本機目錄。

1. 出現提示時，請確認上傳以上傳選取的目錄。

1. 您的上傳狀態會顯示在 VS 程式碼中，上傳程序完成時會通知您。

**使用組建上傳目錄**
**注意**  
請注意以下事項：  
此程序需要 AWS Serverless Application Model CLI。
 AWS 工具組會在上傳前通知您無法偵測到相符的處理常式。
若要變更連接至 Lambda 函數的處理常式，請使用 AWS Lambda console 或 AWS Command Line Interface。

1. 從 AWS Toolkit for Visual Studio Code中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器展開 **Lambda** 以檢視您的 Lambda 資源。

1. 在您要上傳變更的 Lambda 函數上按一下滑鼠右鍵，然後選擇**上傳 Lambda...** 以開啟**選取上傳類型**功能表。

1. 選擇**目錄**以繼續到**建置目錄**畫面。

1. 從**建置目錄**畫面中，選擇**是**，然後選擇要上傳的本機目錄。

1. 出現提示時，確認上傳以開始建置和上傳選取的目錄。

1. 您的上傳狀態會顯示在 VS 程式碼中，上傳程序完成時會通知您。

## 將您的 Lambda 函數轉換為 AWS SAM 專案
<a name="lambda-sam"></a>

若要將您的 Lambda 函數轉換為 AWS SAM 堆疊，請完成下列步驟。

**警告**  
目前，將 Lambda 函數轉換為 AWS SAM 專案時，僅支援一部分的資源。若要在轉換後尋找任何遺失的資源，請檢查 Lambda 主控台，並手動將其新增至您的 AWS SAM 範本。如需支援和不支援資源的其他詳細資訊，請參閱《 *AWS CloudFormation 開發人員指南*》中的[資源類型支援](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html)主題。

1. 從 AWS Toolkit 中，展開 AWS 瀏覽器。

1. 從 AWS 瀏覽器中，使用您要轉換為 AWS SAM 專案的 Lambda 函數展開 AWS 區域。

1. 從 AWS 區域中，展開 Lambda 並導覽您要轉換為 AWS SAM 堆疊的函數。

1. 從 Lambda 函數旁的快速選單中，選擇**轉換為 SAM 應用程式**圖示來瀏覽本機檔案系統，並指定新 AWS SAM 專案的位置。

1. 指定位置後， AWS Toolkit 會開始將您的 Lambda 函數轉換為 AWS SAM 專案，VS Code 會提供程序狀態的更新。
**注意**  
此程序可能需要幾分鐘的時間。

1. 當 VS 代碼提示時，輸入堆疊名稱，然後按 **Enter**鍵繼續。

1. VS Code 會繼續更新您專案的狀態，然後在程序完成時通知您，並以 VS Code 工作區的形式開啟您的新 AWS SAM 專案。

# AWS Lambda console 至 IDE
<a name="lambda-console-ide"></a>

 AWS Lambda console 到 IDE 功能可讓您將 AWS Lambda 函數從 下載 AWS Lambda console 到 VS 程式碼。在 VS Code 中使用 Lambda 函數可讓您存取其他本機開發選項，例如 AWS Serverless Application Model (AWS SAM) 和 AWS Cloud Development Kit (AWS CDK)。

如需 的詳細資訊 AWS Lambda，請參閱 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html)開發人員指南。若要開始使用 AWS Toolkit 中的 Lambda 函數，請參閱本使用者指南中的[使用 AWS Lambda 函數](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/remote-lambda.html)主題。下列各節說明如何將工作流程從 Lambda 主控台移至 VS 程式碼。如需將 Lambda 函數從 Lambda 主控台移至 VS 程式碼的詳細資訊，包括如何開始使用 Lambda 主控台，請參閱《 [開發人員指南》中的使用 VS 程式碼在本機開發 Lambda 函數](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac-local-development.html)主題。 *AWS Lambda *

## 從主控台遷移至本機開發
<a name="w2aac17c43c13b7"></a>

若要從 VS Code 中的 Lambda 主控台開啟 Lambda 函數，請完成下列步驟：

1. 從 Web 瀏覽器開啟 [Lambda 主控台](https://console.aws.amazon.com/lambda)。

1. 從 Lambda 主控台中，選擇要在 VS 程式碼中開啟的函數。

1. 從函數檢視中，導覽至**程式碼來源**索引標籤。

1. 從**程式碼來源**索引標籤中，選擇在 **VS 程式碼中開啟**。

## 在 VS 程式碼中使用 Lambda 函數
<a name="w2aac17c43c13b9"></a>

當您的 Lambda 函數透過 Lambda 主控台在 VS 程式碼中開啟時：
+ VS 程式碼會自動在您的本機電腦上啟動。
+ 您的 Lambda 函數會開啟為 VS 程式碼工作區。
+ 您的 Lambda 會在 VS 程式碼編輯器中`handler file`開啟。
**注意**  
如果工作區`handler file`中未正確設定 ，則 VS 程式碼編輯器中不會開啟任何檔案。

透過 Lambda 主控台在 VS 程式碼中開啟 Lambda 函數可讓您存取所有現有的 AWS Toolkit Lambda 功能，包括使用完整語言支援編輯函數程式碼的能力、本機測試、遠端偵錯、部署支援和相依性管理。如需 AWS Toolkit 中支援之 Lambda 功能的詳細資訊，請參閱本使用者指南中的 [AWS Lambda](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/building-lambda.html)服務目錄。

# AWS Lambda 透過 LocalStack 支援
<a name="lambda-localstack"></a>

在 中使用 LocalStack 支援建置、測試和偵錯無伺服器應用程式 AWS Toolkit for Visual Studio Code。LocalStack 是一種 AWS 雲端模擬器，允許對無伺服器應用程式進行本機測試。

如需 的詳細資訊 AWS Lambda，請參閱 [AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/welcome.html)*開發人員指南*。若要進一步了解 LocalStack，請造訪其網站 [LocalStack](https://www.localstack.cloud/)。

## 先決條件
<a name="prereq"></a>

 以下是在 VS 程式碼中使用 LocalStack 的先決條件。

**注意**  
LocalStack CLI 是在設定程序期間安裝，但如果您偏好不同版本的 LocalStack CLI，則所需的最低版本為 *4.8.0。*
+ 需要 LocalStack Web 應用程式帳戶才能存取免費和付費 LocalStack 方案可用的所有功能。LocalStack 社群版本可在沒有 帳戶的情況下使用。
+ 在 VS 程式碼中使用 LocalStack 需要 Docker。如需 Docker LocalStack 需求的詳細資訊，請參閱 LocalStack 文件中的 LocalStack [Docker 映像](https://docs.localstack.cloud/aws/capabilities/config/docker-images/)主題。
+ **建議：**The AWS Command Line Interface (AWS CLI) 可協助您在模擬雲端環境中使用 服務。

## 安裝 LocalStack
<a name="install"></a>

 若要安裝 LocalStack 免費和付費分層版本，請完成下列步驟。

**注意**  
如需如何設定 LocalStack Community Edition 的說明，請參閱本主題之設定 *LocalStack 一節中的 LocalStack Community* 內容。 * LocalStack* 

1. 從 AWS Toolkit 中，展開 **APPLICATION BUILDER** Explorer。

1. 選擇**開啟逐步解說**按鈕，在 VS 程式碼編輯器中開啟**開始建置應用程式**逐步解說索引標籤。

1. 從逐步解說中，選擇**安裝 LocalStack** 以啟動 VS Code 中的 LocalStack 安裝程序。

## 設定 LocalStack
<a name="setup"></a>

安裝適用於 VS Code 的 LocalStack 擴充功能後，您可能會在需要設定時看到下列其中一個指標：
+ 在預設位於 IDE 左下角的 VS 程式碼狀態列中，LocalStack 狀態為紅色。
+ VS 程式碼會提示您設定 LocalStack。

LocalStack 的設定和組態有兩種類型，取決於您使用的 LocalStack 版本。下列標籤區段說明每個 LocalStack 設定程序。

**注意**  
LocalStack 免費和付費方案版本需要 LocalStack 驗證權杖。如需 LocalStack 定價的特定資訊，請參閱他們的[選擇您的計劃](https://www.localstack.cloud/pricing)定價指南。

### LocalStack 免費和付費方案
<a name="free-paid"></a>

設定 LocalStack 的方式有兩種。
+ 從 VS 程式碼**設定 LocalStack 開始**提示，選擇**設定**按鈕。
+ 從 VS 程式碼狀態列中，選擇 LocalStack 狀態圖示以開啟**設定 LocalStack 以開始使用**提示，然後選擇**設定**按鈕。

在設定期間，系統會執行下列步驟：

1. 安裝 LocalStack CLI。

1. 檢查您是否擁有 LocalStack 帳戶。

1. 如果您有 LocalStack 帳戶，系統會引導您完成預設 Web 瀏覽器中的身分驗證程序。同樣地，如果您沒有 LocalStack 帳戶，系統會在身分驗證程序之前引導您完成帳戶設定。

設定 LocalStack 後，VS Code 狀態列中的 LocalStack 狀態會更新。

**注意**  
如果您尚未建立 LocalStack 的 AWS 設定檔，則會自動為您建立新的設定檔，做為 LocalStack 設定程序的一部分。

### LocalStack 社群
<a name="community"></a>

LocalStack 的 Community Edition 是免費的，不需要您註冊帳戶，它從不需要授權的 Docker 映像執行。如需 LocalStack Community Edition 的其他詳細資訊，請參閱 [LocalStack Community 映像](https://docs.localstack.cloud/references/docker-images/)文件。下列各節說明在 VS Code 中使用 LocalStack 社群版本所需的先決條件和基本設定。

**啟動新的執行個體**

 若要啟動 LocalStack Community 的新執行個體，請完成下列程序。

**注意**  
下列範例會在連接埠 4566 上啟動 LocalStack 的容器執行個體。如果您指定不同的連接埠值，則必須更新設定 * AWS CLI 和 AWS Toolkit* 區段中程序中指定的連接埠值。

1. 從 VS 程式碼中，按 開啟 VS 程式碼終端機**ctrl \$1 `(backtick)**。

1. 在終端機中輸入以下內容。

   **Mac：**

   ```
   docker run -d --name localstack_main \
   >> -p 4566:4566 \
   >> -v /var/run/docker.sock:/var/run/docker.sock \
   >> localstack/localstack
   ```

   **Windows**：

   ```
   docker run -d --name localstack_main `
   >> -p 4566:4566 `
   >> -v /var/run/docker.sock:/var/run/docker.sock `
   >> localstack/localstack
   ```

1. 程序完成時，終端機會更新 Docker 執行個體的狀態。

LocalStack 的這個容器化執行個體可讓您存取您在下載程序期間指定的 AWS 服務。

**為 LocalStack 和 Docker 設定 CLI。**

 若要設定 AWS CLI 和 AWS Toolkit 在 Docker 中使用 LocalStack，請完成下列步驟來設定新的設定檔：

1. 從 VS 程式碼中，按 開啟 VS 程式碼終端機**ctrl \$1 `(backtick)**。

1. 在終端機中輸入以下內容。

   ```
   ~/.aws/credentials
   [localstack]
   aws_access_key_id = test
   aws_secret_access_key = test
   ~/.aws/config
   [profile localstack]
   region = us-east-1
   output = json
   endpoint_url = http://localhost:4566 [default localstack endpoint]
   ```

1. Toolkit 會 AWS 偵測 LocalStack 設定檔並更新連線狀態選單。

設定後，從狀態列的設定檔區段中選擇 LocalStack AWS 設定檔，即可在 AWS 瀏覽器中顯示 LocalStack 資源。此外，您可以在 VS 程式碼終端機的**輸出**索引標籤中檢視 LocalStack 日誌。

## 在 VS 程式碼中啟動 LocalStack
<a name="w2aac17c43c17c13"></a>

您可以使用下列任一方法啟動 LocalStack：

**從 VS 程式碼狀態列啟動 LocalStack**

1. 從 VS 程式碼導覽至狀態列，然後選擇**啟動 LocalStack** 按鈕以啟動 LocalStack。

1. LocalStack 成功啟動時，VS 程式碼狀態列會更新。

**從 VS Code **Command Palette** 啟動 LocalStack**

1. 從 VS 程式碼中，按 **Cmd \$1 Shift \$1 P**(Mac) 或 **Control \$1 Shift \$1 P**(Windows) **開啟命令調色盤**。

1. 從**命令面板**中，**Start LocalStack**在搜尋列中輸入 ，並在填入結果時從清單中選擇它。

1. LocalStack 成功啟動時，VS 程式碼狀態列會更新。

**從 VS 程式碼終端機啟動 LocalStack**

1. 從 VS 程式碼中，按 開啟 VS 程式碼終端機**ctrl \$1 `(backtick)**。

1. 從 VS 程式碼終端機，輸入 **localstack start** CLI 命令。

1. LocalStack 成功啟動時，VS 程式碼狀態列會更新。

## 建置範例無伺服器應用程式
<a name="serverless"></a>

 若要開始在 VS Code 中使用 LocalStack，您需要範例無伺服器應用程式。如果您的 AWS 帳戶中已有現有的應用程式，您可以使用 LocalStack 將其部署到本機，也可以使用 AWS Serverless Land 建立新的應用程式。

如需在 Toolkit AWS 中使用無伺服器土地建立應用程式的詳細資訊，請參閱《 使用者指南》中的[使用無 AWS 伺服器土地](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/serverlessland-overview.html)主題。如需 Serverless Land 的詳細資訊，請參閱 [Serverless Land](https://serverlessland.com/) Web 應用程式主要登陸頁面。

## 使用 LocalStack 測試和偵錯 Lambda 函數
<a name="test-debug"></a>

在 LocalStack VS Code 延伸模組中測試和偵錯 Lambda 函數類似於使用部署到 AWS 雲端的函數。主要差別在於您的 AWS Toolkit 執行個體必須使用 LocalStack 帳戶進行身分驗證，才能使用 LocalStack 部署和偵錯函數。

**注意**  
本節所述的測試和偵錯功能不適用於 LocalStack Community Edition。  
若要在 VS 程式碼中使用 LocalStack，請連線至 Toolkit 中的 LocalStack AWS 設定檔。當您的 LocalStack 設定檔處於作用中狀態時，VS 程式碼狀態列會顯示 **AWS： profile：localstack （自訂端點）** 和核取記號。

如需在 AWS Toolkit 中使用 Lambda 函數的詳細資訊，請參閱本使用者指南中的[使用 AWS Lambda 函數](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/remote-lambda.html)主題。

# AWS Lambda 遠端偵錯
<a name="lambda-remote-debug"></a>

 AWS Toolkit for Visual Studio Code 可讓您直接在 VS 程式碼中偵錯在雲端執行的 AWS Lambda 函數。透過 AWS Lambda 遠端偵錯，您可以檢查執行中的函數、設定中斷點、檢查變數和逐步偵錯，而無需修改其現有的開發工作流程。

下列各節說明如何在 中使用 Lambda 遠端偵錯 AWS Toolkit for Visual Studio Code。

## Lambda 遠端偵錯的運作方式
<a name="w2aac17c43c19b7"></a>

Toolkit 使用額外的 Lambda 偵錯層暫時修改 Lambda 函數，並將 Lambda 調用逾時限制延長至 900 秒，以 AWS 啟用遠端偵錯。使用 Secure Tunneling 在本機偵錯工具與 Lambda 執行期環境 AWS IoT 之間建立安全連線。此連線可讓您在遠端執行時，使用本機程式碼中斷點逐步完成函數。偵錯工作階段完成後，所有暫時修改都會自動還原為其原始設定。

## 開始使用
<a name="w2aac17c43c19b9"></a>

### 支援的執行時期
<a name="w2aac17c43c19b9b3"></a>

Lambda 遠端偵錯支援下列執行時間。
+ Python (Amazon Linux 2023)
+ Java
+ Typescript/JavaScript/Node.js (Amazon Linux 2023)

**注意**  
Lambda 遠端偵錯不支援 Lambda 受管執行個體和 OCI 映像函數類型。

### 先決條件
<a name="w2aac17c43c19b9b5"></a>

在開始之前，必須符合下列先決條件。
+ 您必須在 AWS Toolkit 中設定有效的 AWS 登入資料。如需安裝 AWS Toolkit 和設定登入資料的其他詳細資訊，請參閱本使用者指南中的[入門](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/setting-up.html)主題。
+ Lambda 函數已部署至 AWS 您的帳戶。如需部署 Lambda 函數的詳細資訊，請參閱《 *AWS Lambda*開發人員指南》中的[建立您的第一個 Lambda 函數](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html)主題。
+ 您必須擁有適當的 AWS Identity and Access Management (IAM) 政策和許可，才能偵錯函數。如需 Lambda 許可的其他詳細資訊，請參閱《 *AWS Lambda*開發人員指南》中的主題[AWS 的 受管政策 AWS Lambda](https://docs.aws.amazon.com//lambda/latest/dg/security-iam-awsmanpol.html)。以下是政策的範例，其中包含在 Toolkit 中使用 Lambda AWS 遠端偵錯所需的最低許可。
**注意**  
透過 AWS AWS IoT 安全通道啟用遠端偵錯。這可讓您的本機除錯器建立與 Lambda 執行期環境的安全連線。

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:ListFunctions",
          "lambda:GetFunction",
          "lambda:GetFunctionConfiguration",
          "lambda:GetLayerVersion",
          "lambda:UpdateFunctionConfiguration",
          "lambda:InvokeFunction",
          "lambda:PublishVersion",
          "lambda:DeleteFunction",
          "iot:OpenTunnel",
          "iot:RotateTunnelAccessToken",
          "iot:ListTunnels"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

## 存取 Lambda 遠端偵錯
<a name="w2aac17c43c19c11"></a>

有兩種主要路徑可存取 AWS Toolkit 中的 Lambda 遠端偵錯： AWS Explorer 或 Application Builder Explorer。從 AWS 瀏覽器，您可以透過節點 AWS Lambda 存取 Lambda 遠端偵錯。從 Application Builder Explorer，您可以透過本機 AWS SAM 專案存取 Lambda 遠端偵錯。

**從 AWS 瀏覽器存取 Lambda 遠端偵錯**

1. 從 VS 程式碼中，開啟 AWS Toolkit 延伸模組。

1. 從 AWS Toolkit 中，展開 AWS 瀏覽器。

1. 從瀏覽器展開 **Lambda** 節點。

1. 導覽至您要偵錯的函數，然後從內容功能表中選擇**遠端叫用**圖示，以開啟**遠端叫用組態**畫面。

**從 Application Builder Explorer 存取 Lambda 遠端偵錯。**

1. 從 VS 程式碼中，開啟 AWS Toolkit 延伸模組。

1. 從 AWS Toolkit 中，展開應用程式建置器瀏覽器。

1. 從瀏覽器展開包含您要偵錯之 Lambda `AWS SAM`專案的專案。

1. 展開您要偵錯的已部署`Lambda`函數。

1. 導覽至函數遠端，然後從內容功能表中選擇**遠端叫用**圖示，以開啟**遠端叫用組態**畫面。

## 使用 Lambda 遠端偵錯
<a name="w2aac17c43c19c13"></a>

下列各節說明如何在 中使用 Lambda 遠端偵錯 AWS Toolkit for Visual Studio Code。

**注意**  
Lambda 函數有 5 層限制，函數程式碼和所有連接層的合併限制為 250MB。Lambda 遠端偵錯需要至少 1 個可用層才能執行。

### 設定偵錯工作階段
<a name="w2aac17c43c19c13b7"></a>

開始之前，請先完成下列程序來設定偵錯工作階段。

1. 完成*從 AWS 瀏覽器存取 Lambda 遠端偵錯*，或從上一節*的應用程式建置器瀏覽器程序存取 Lambda 遠端偵錯*，以開啟**遠端調用組態**功能表。

1. 從**遠端調用組態**功能表中，選取**遠端偵錯**核取方塊以顯示遠端偵錯屬性。

1. 指定**本機處理常式檔案的本機根路徑**。
**注意**  
本機根路徑是原始碼與部署的 Lambda 函數相符的位置。如果您使用 Application Builder Explorer 中部署的函數，則會自動偵測本機根路徑。  
如果您沒有儲存在本機的原始程式碼，請選擇**下載遠端程式碼**按鈕來擷取 Lambda 函數原始程式碼。這將在 VS 程式碼編輯器`handler file`中開啟您的 。

1. 從**承載**區段中，指定取得測試事件資料的位置。

### 設定中斷點和偵錯
<a name="w2aac17c43c19c13b9"></a>

完成下列程序，設定中斷點並開始偵錯。

1. 在 VS 程式碼編輯器`handler file`的 中，按一下裝訂邊，在您要暫停偵錯的行號上設定中斷點。

1. 當您對中斷點感到滿意時，請返回**遠端調用組態**功能表，以確認您的設定已正確設定，然後選擇**遠端調用**按鈕以開始偵錯。

1. Toolkit 會使用偵錯功能 AWS 更新您的 Lambda 函數、為偵錯工作階段建立安全通道、使用指定的承載叫用函數，然後在到達中斷點時暫停程序。

1. 在中斷點暫停時，使用 **RUN AND DEBUG** 窗格來檢視您的 **VARIABLES**、**CALL STACK** 和 **BREAKPOINTS**。

### 更新和測試您的函數
<a name="w2aac17c43c19c13c11"></a>

若要使用快速部署修改程式碼和測試變更，請完成下列程序。

1. 啟用偵錯工作階段後，請在 VS 程式碼編輯器`handler file`中變更您的 。

1. 儲存您的變更 (**Command\$1S on macOS**、**Ctrl\$1S on Windows**)

1. 出現提示時，請確認您希望繼續部署變更。 AWS 工具組將使用修改後的程式碼更新您的 Lambda 函數。

1. 透過設定新的中斷點並再次選取**遠端調用**按鈕，繼續偵錯和測試您的變更。
**注意**  
 或者，您可以在 VS 程式碼**偵錯控制項中取消選取連接偵錯工具**選項，然後選擇**遠端調用**按鈕來執行函數，而無需偵錯。

### 結束偵錯工作階段
<a name="w2aac17c43c19c13c13"></a>

下列每個選項都會結束遠端偵錯工作階段，並從專案中移除偵錯層。
+ 從**遠端調用組態**畫面選擇**移除偵錯設定**選項。
+ 從 VS 程式碼偵錯控制項中選擇**中斷**連線圖示。
+ 在 VS 程式碼編輯器`handler file`中關閉 。

**注意**  
謹記下列事項：  
Lambda 除錯層會在閒置 60 秒後自動移除。計數會在您上次調用完成時開始。
如果您在偵錯過程中對infrastructure-as-code(IaC) 受管 (AWS SAM AWS CDK、Terraform) 函數進行程式碼變更，請將它們儲存至本機專案，並考慮更新您的來源控制儲存庫。重新部署 IaC 函數時，會覆寫未儲存的變更。
如果您僅為偵錯目的進行暫時性變更，建議您從來源控制重新部署函數，以確保其符合您的生產程式碼。

### 使用來源映射偵錯 TypeScript Lambda 函數
<a name="typescript-source-maps"></a>

下列各節說明如何使用來源映射偵錯 TypeScript Lambda 函數。

#### 先決條件
<a name="w2aac17c43c19c13c15b5"></a>

若要偵錯 TypeScript Lambda 函數，必須符合下列先決條件。
+ 您必須在啟用來源映射選項的情況下編譯 TypeScript。如需詳細資訊，請參閱 VS 程式碼文件中的 [JavaScript 來源映射支援](https://code.visualstudio.com/docs/typescript/typescript-debugging#_javascript-source-map-support)主題。
+ 不支援內嵌來源映射。您必須使用個別`.js.map`的檔案來存放來源映射。

#### Configuration
<a name="w2aac17c43c19c13c15b7"></a>

若要在 AWS Toolkit 中為 TypeScript Lambda 函數設定 Lambda 遠端偵錯，請完成下列步驟。

1. 從 AWS Toolkit 中，展開 AWS 瀏覽器。

1. 從瀏覽器展開 **Lambda** 節點。

1. 導覽至您要為 TypeScript 設定的函數，然後從內容功能表中選擇**遠端叫用**圖示，以開啟**遠端叫用組態**畫面。

1. 選取遠端偵錯核取方塊以啟用**遠端偵錯**。

1. 指向包含您 的目錄，以設定您的**本機根路徑**`TypeScript handler file`。
**注意**  
是您設定偵錯中斷點`TypeScript handler file`的位置。

1. 展開**遠端偵錯其他組態設定**。

1. 選取來源映射核取方塊以啟用**來源映射**。

1. 將**輸出檔案**欄位設定為 Lambda 函數複本的本機目錄。  
**Example**  

   如果 `app.js`和 `app.map` 位於 中`.aws-sam/build/HelloWorldFunction`，請將 **Out 檔案**位置設為 `/Users/user/project/aws-sam/build/HelloWorldFunction/*`。
**注意**  
**Out 檔案**路徑應為絕對路徑。  
對於 AWS SAM 和 AWS CDK 專案， AWS Toolkit 支援自動來源映射偵測。如果這些專案的**輸出檔案**欄位保持空白，工具組會自動嘗試偵測來源映射位置。

1. 當您對設定感到滿意時，請選擇**遠端調用**按鈕以開始偵錯 TypeScript 函數。

## 故障診斷和進階使用案例
<a name="troubleshooting"></a>

如果您的偵錯工作階段失敗，請完成下列步驟以開始疑難排解程序。

1. 將 AWS Toolkit 更新至最新版本。

1. 關閉**遠端調用組態** Web 檢視並重新開啟，以重新整理 Web 檢視。

1. 完全關閉並重新開啟 VS 程式碼，以重新啟動 VS 程式碼。

1. 開啟 VS Code Command Palette 並輸入命令 **AWS: Reset Lambda Remote Debugging Snapshot**，並在填入結果時選取它，以重設 Lambda 遠端偵錯快照。

1. 如果您無法對問題進行疑難排解，請將問題提交至 [AWS Toolkit for Visual Studio Code GitHub 問題](https://github.com/aws/aws-toolkit-vscode/issues)。

### 進階使用案例：程式碼簽署組態
<a name="troubleshooting-code-signing-configuration"></a>

遠端偵錯需要將偵錯層連接至 Lambda 函數。如果您的函數已啟用並強制執行程式碼簽署組態， AWS Toolkit 就無法自動將偵錯層連接至函數。

有兩種選項可解決程式碼簽署組態問題。
+ 暫時移除程式碼簽署。
+ 使用簽章的偵錯層。

#### 暫時移除程式碼簽署
<a name="troubleshooting-code-signing-configuration-temp-remove"></a>

透過設定 來更新程式碼簽署組態`UntrustedArtifactOnDeployment : Warn`，然後在`Enforced`除錯程序完成後重新啟用 。

如需詳細資訊，請參閱 API 參考中的 [UpdateCodeSigningConfig](https://docs.aws.amazon.com//lambda/latest/api/API_UpdateCodeSigningConfig.html) *AWS Lambda 參考*。

#### 使用已簽章的偵錯層
<a name="troubleshooting-code-signing-configuration-signed-debug-layer"></a>

1. 從 AWS Toolkit 中的 Lambda 遠端偵錯，展開**遠端偵錯其他組態**區段。

1. 從**遠端偵錯其他組態**區段中，從層**覆寫欄位複製您的區域層** ARN。

1. 從 中 AWS CLI，使用下列命令下載 layer 版本 `aws lambda get-layer-version-by-arn --arn layer-arn`，將 *layer-arn* 取代為您的 layer ARN。如需如何下載已簽署偵錯層的詳細說明，請參閱《 命令參考》中的 [get-layer-version-by-arn](https://docs.aws.amazon.com/cli/latest/reference/lambda/get-layer-version-by-arn.html) 參考。 *AWS CLI *

1. 使用程式碼簽署組態簽署 layer，並將其發佈至您的帳戶。如需簽署和發佈指引，請參閱《 *AWS Serverless Application Model 開發人員指南*》中的[為您的 AWS SAM 應用程式主題設定程式碼簽署](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/authoring-codesigning.html)。

1. 在層簽署並發佈至您的帳戶後，請返回 Lambda **遠端偵錯的遠端偵錯其他組態**區段，然後在**層覆寫**欄位中輸入新的層 ARN。程序完成時，Lambda 遠端偵錯會使用您簽署的層，而不是預設層。

### 進階使用案例：使用 SnapStart 或佈建並行對函數進行偵錯
<a name="troubleshooting-snapstart-provisioned-concurrency"></a>

對於使用 SnapStart 或佈建並行設定的 Lambda 函數，發佈新版本需要更多時間。若要加速偵錯工作流程，您可以將 Lambda 遠端偵錯設定為僅更新函數的`$LATEST`版本，而不是發佈新版本。

1. 從**遠端調用組態設定**畫面中，展開**遠端偵錯其他組態設定**。

1. 取消選取**發佈版本**選項。

1. Toolkit AWS 現在只會更新函數的`$LATEST`版本，並使用它進行偵錯。

**注意**  
作為使用 `$LATEST`版本偵錯的副作用，您應該避免可能叫用 `$LATEST`版本的其他流量，以確保不受干擾的偵錯環境。

### 支援的 區域
<a name="troubleshooting-regions"></a>

當區域不支援遠端偵錯時，會發生下列錯誤。

```
Region ${region} doesn't support remote debugging yet
```

以下是支援的 區域清單。
+ ap-east-1
+ ap-northeast-1
+ ap-northeast-2
+ ap-south-1
+ ap-southeast-1
+ ap-southeast-2
+ ca-central-1
+ eu-central-1
+ eu-north-1
+ eu-west-1
+ eu-west-2
+ eu-west-3
+ me-central-1
+ me-south-1
+ sa-east-1
+ us-east-1
+ us-east-2
+ us-west-1
+ us-west-2

### Lambda RequestEntityTooLargeException
<a name="troubleshooting-storage-limit"></a>

Lambda 函數有 5 層限制，函數程式碼和所有連接層的合併限制為 250MB。遠端偵錯層約為 40MB，如果您有大型函數套件或多個層，可能會導致函數超過此限制。如需其他詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的 [Lambda： InvalidParameterValueException 或 RequestEntityTooLargeException](https://docs.aws.amazon.com//lambda/latest/dg/troubleshooting-deployment.html#troubleshooting-deployment-InvalidParameterValueException1) 主題一節。

下列清單說明疑難排解和修正此錯誤的方法。
+ **減少函數大小**：最佳化函數程式碼並移除不必要的相依性。
+ **移除未使用的圖層**：在偵錯期間暫時移除非必要的圖層。
+ **使用外部相依性**：將大型相依性移至外部儲存體，例如 Amazon S3，並在執行時間將其載入。

### 疑難排解 Java 偵錯
<a name="troubleshooting-java-debugging"></a>

若要偵錯 Java Lambda 函數，您必須在本機安裝與 Lambda 函數執行時間版本相同的 Java 版本。

例如，偵錯 Java 25 函數時，您必須在 AWS Toolkit 正在執行的本機環境中安裝 Java 25。如果您嘗試使用本機安裝的 Java 21 或舊版對 Java 25 函數進行偵錯，遠端偵錯將無法在您設定的中斷點停止。

在開始偵錯工作階段之前，請確定您的本機 Java 版本符合您 Lambda 函數的執行時間版本。

### 超過 IoT 安全通道配額
<a name="troubleshooting-tunnel-quota"></a>

以下是在 Lambda 遠端偵錯中達到 AWS IoT 安全通道連線的每日限制時，發生*通道配額超過錯誤*的範例。

```
Error creating/reusing tunnel: LimitExceededException: Exceeded quota of Lambda debugging tunnels
```

AWS IoT 安全通道連線具有下列配額：
+ 自由層 IoT 安全通道每天分配 10 個連線。
+ 每個通道最多支援一個 VS 程式碼執行個體 12 小時。
+ 配額適用於每個 AWS 帳戶、每天。

如果您遇到 AWS IoT 安全通道錯誤，請等待每日配額重設，或聯絡 AWS 支援以請求提高配額限制。如需 AWS 支援聯絡資訊，請參閱[AWS 支援聯絡入口網站](https://aws.amazon.com/contact-us/)。如需 AWS IoT 安全通道的詳細資訊，請參閱《 *AWS IoT 開發人員指南*》中的[AWS IoT 安全通道](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html)主題。