

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

# 使用 Visual Studio Code 遠端偵錯 Lambda 函式
<a name="debugging"></a>

透過 [AWS Toolkit for Visual Studio Code](https://aws.amazon.com/visualstudiocode/) 中的遠端偵錯功能，您可以對直接在 AWS 雲端中執行的 Lambda 函式進行偵錯。此功能在調查難以在本機重現，或僅透過日誌難以診斷的問題時相當實用。

透過遠端偵錯功能，您可以：
+ 在 Lambda 函式程式碼中設定中斷點。
+ 即時逐步執行程式碼。
+ 在執行時期內檢查變數與狀態。
+ 偵錯部署至 AWS 的 Lambda 函式，包括 VPC 中或具有特定 IAM 許可的函式。

## 支援的執行期
<a name="debugging-runtimes"></a>

下列執行時期支援遠端偵錯功能：
+ Python (AL2023)
+ Java
+ JavaScript/Node.js (AL2023)

**注意**  
x86\$164 與 arm64 架構都支援遠端偵錯功能。

## 安全性與遠端偵錯
<a name="debugging-security"></a>

遠端偵錯功能會在現有的 Lambda 安全邊界內運作。使用者可以透過 `UpdateFunctionConfiguration` 許可將層連接至函式，該許可已經能夠存取函式環境變數與組態。遠端偵錯功能不會超出現有許可範圍，而是會透過安全通道與自動工作階段管理來新增額外的安全控制項。此外，遠端偵錯功能完全由客戶控制，需要明確的許可與動作：
+ **IoT 安全通道建立**：AWS Toolkit 必須建立一個 IoT 安全通道，這只有在使用者明確許可時才能使用 `iot:OpenTunnel` 執行此動作。
+ **偵錯層連接與權杖管理**：偵錯程序會透過下列控制項維持安全性：
  + 偵錯層必須連接至 Lambda 函式，此程序需要下列許可：`lambda:UpdateFunctionConfiguration` 與 `lambda:GetLayerVersion`。
  + 在每個偵錯工作階段開始之前，必須更新函式環境變數中的安全權杖 (透過 `iot:OpenTunnel` 產生)，此程序也需要 `lambda:UpdateFunctionConfiguration`。
  + 出於安全考量，此權杖會自動輪換，偵錯層也會在每個偵錯工作階段結束時自動移除，無法重複使用。

**注意**  
x86\$164 與 arm64 架構都支援遠端偵錯功能。

## 必要條件
<a name="debugging-prerequisites"></a>

開始遠端偵錯之前，確認已滿足以下條件：

1. Lambda 函式已部署至您的 AWS 帳戶。

1. AWS Toolkit for Visual Studio Code。如需安裝說明，請參閱 [Setting up the AWS Toolkit for Visual Studio Code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-toolkit.html)。

1. 安裝的 AWS Toolkit 為 **3.69.0** 或更新版本。

1. 已在 AWS Toolkit for Visual Studio Code 中設定 AWS 憑證。如需更多詳細資訊，請參閱 [身分驗證與存取控制](foundation-iac-local-development.md#lambda-functions-vscode-authentication-and-access-control)。

## 遠端偵錯 Lambda 函式
<a name="debugging-procedure"></a>

請依照下列步驟啟動遠端偵錯工作階段：

1. 選擇左側邊欄中的 AWS 圖示，在 VS Code 中開啟 AWS Explorer。

1. 展開 Lambda 區段檢視函式。

1. 在要偵錯的函式上按一下滑鼠右鍵。

1. 從內容功能表中，選擇**遠端調用**。

1. 在開啟的調用視窗中，勾選**啟用偵錯**方塊。

1. 按一下**調用**，啟動遠端偵錯工作階段。

**注意**  
Lambda 函式的函式程式碼與所有連接層，合併大小上限為 250 MB。遠端偵錯層可使函式大小增加約 40 MB。

當您執行下列操作時，遠端偵錯工作階段將結束：
+ 在遠端調用組態畫面中，選擇**移除偵錯設定**。
+ 在 VS Code 偵錯控制項中，點選中斷連線圖示。
+ 在 VS Code 編輯器中，選取處理常式檔案。

**注意**  
在上次調用結束後，若閒置超過 60 秒，系統會自動移除偵錯層。

## 停用遠端偵錯
<a name="debugging-disable"></a>

有三種方式可以停用此功能：
+ **拒絕函式更新**：將 `lambda:UpdateFunctionConfiguration` 設定為 `deny`。
+ **限制 IoT 許可**：拒絕 IoT 相關許可
+ **封鎖偵錯層**：拒絕下列 ARN 的 `lambda:GetLayerVersion`：
  + `arn:aws:lambda:*:*:layer:LDKLayerX86:*`
  + `arn:aws:lambda:*:*:layer:LDKLayerArm64:*`
**注意**  
停用此功能可防止在函式組態更新期間新增偵錯層。

## 其他資訊
<a name="debugging-related-info"></a>

如需有關在 VS Code 中使用 Lambda 的詳細資訊，請參閱[使用 VS Code 在本機開發 Lambda 函式](foundation-iac-local-development.md)。

如需有關疑難排解、進階使用案例與區域可用性的詳細說明，請參閱 AWS Toolkit for Visual Studio Code User Guide 中的 [Remote debugging Lambda functions](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/lambda-remote-debug.html)。