

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

# 使用 VS Code 在本機開發 Lambda 函式
<a name="foundation-iac-local-development"></a>

您可以將 Lambda 函式從 Lambda 主控台遷移至 Visual Studio Code，後者不僅提供完整的開發環境，還支援您使用 AWS SAM與 AWS CDK 等其他本機開發選項。

## 本機開發的主要優勢
<a name="lambda-functions-vscode-benefits"></a>

雖然 Lambda 主控台提供了一種快速編輯與測試函式的方式，但本機開發能帶來更進階的功能：
+ **進階 IDE 功能**：偵錯、程式碼自動完成與重構工具
+ **離線開發**：在部署至雲端前，先於本機進行程式碼開發與測試
+ **基礎結構即程式碼整合**：與 AWS SAM、AWS CDK 和 Infrastructure Composer 無縫搭配使用
+ **相依項管理**：完全控制函式相依項

## 必要條件
<a name="lambda-functions-vscode-prerequisites"></a>

在 VS Code 中本機開發 Lambda 函式之前，您必須已滿足以下條件：
+ **VS Code**：如需安裝說明，請參閱 [Download VS Code](https://code.visualstudio.com/download)。
+ **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)。如需概觀，請參閱 [AWS Toolkit for Visual Studio Code](https://aws.amazon.com/visualstudiocode/)。
+ **AWS 憑證**：如需有關設定憑證的資訊，請參閱 [Setting up your AWS credentials](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html)。
+ **AWS SAM CLI**：如需安裝說明，請參閱 [Installing the AWS SAM CLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)。
+ **已安裝 Docker (選用項，但在本機測試時為必要項)**：如需安裝說明，請參閱 [Get Docker](https://docs.docker.com/get-docker/)。

**注意**  
如果您已在本機設定了 AWS 帳戶和設定檔，請確保已將 AdministratorAccess 受管政策新增至您設定的 AWS 設定檔。

## 身分驗證與存取控制
<a name="lambda-functions-vscode-authentication-and-access-control"></a>

與在雲端開發一樣，若要在本機開發 Lambda 函式，您需要 AWS 憑證來代表您安全地存取和管理 AWS 資源。AWS Toolkit for VS Code 支援下列身分驗證方法：

AWS Toolkit for VS Code 支援下列身分驗證方法：
+ IAM 使用者長期憑證
+ 來自擔任角色的臨時憑證
+ 聯合身分
+ AWS 帳戶根使用者憑證 (不建議使用)

本節會引導您使用 IAM 使用者長期憑證，完成這些憑證的取得與設定流程。

### 取得 IAM 憑證
<a name="lambda-functions-vscode-iam-credentials"></a>

如果您已有具備存取金鑰的 IAM 使用者，請備妥存取金鑰 ID 與私密存取金鑰，供下一節使用。若無所述金鑰，請依照下列步驟建立金鑰：

**注意**  
您必須一起使用存取金鑰 ID 和私密存取金鑰來驗證您的請求。

若要建立 IAM 使用者與存取金鑰：

1. 前往 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 開啟 IAM 主控台

1. 在導覽窗格中，選擇**使用者** 。

1. 選擇 **Create user** (建立使用者)。

1. 在**使用者名稱**欄位中輸入名稱，然後選擇**下一步**。

1. 在**設定許可**欄位中，選擇**直接連接政策**。

1. 選取 **AdministratorAccess**，然後選擇**下一步**。

1. 選擇 **Create user** (建立使用者)。

1. 在成功橫幅中，選擇**檢視使用者**。

1. 選擇** Create access key (建立新的存取金鑰)**。

1. 在**使用案例**欄位中，選擇**本機程式碼**。

1. 選取確認核取方塊，然後選擇**下一步**。

1. (選用) 輸入描述標籤值。

1. 選擇** Create access key (建立新的存取金鑰)**。

1. 立即複製您的存取金鑰和私密存取金鑰。**一旦離開此頁面，您將無法再次存取該私密存取金鑰。**

**重要**  
切勿共用秘密金鑰，亦勿將其提交至原始碼控制系統。請妥善儲存這些金鑰，並在不再需要時立即刪除。

**注意**  
如需詳細資訊，請參閱 *IAM User Guide* 中的 [Create an IAM user in your AWS account](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html) 和 [Manage access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)。

### 使用 AWS Toolkit 設定 AWS 憑證
<a name="lambda-functions-vscode-configure-credentials-vscode"></a>

下表總結了您將在後續步驟中完成的憑證設定流程。


| 操作步驟 | 為什麼？ | 
| --- | --- | 
| 開啟「登入」面板 | 開始驗證 | 
| 使用命令面板搜尋「AWS 新增連線」 | 存取登入 UI | 
| 選擇「IAM 憑證」 | 使用存取金鑰以程式設計方式進行存取 | 
| 輸入設定檔名稱、存取金鑰、秘密金鑰 | 提供連線所需的憑證 | 
| 檢視 AWS Explorer 更新 | 確認連線已成功建立 | 

請依照如下步驟完成 AWS 帳戶身分驗證：

1. 在 VS Code 中開啟「登入」面板：

   1. 若要開始身分驗證流程，請選取左側導覽窗格中的 AWS 圖示，或開啟「命令面板」(在 Mac 上使用 Cmd\+Shift\+P，在 Windows/Linux 上使用 Ctrl\+Shift\+P)，然後搜尋並選取「**AWS 新增連線**」。

1. 在「登入」面板中，選擇 **IAM 憑證**，然後選取**繼續**。
**注意**  
若要繼續，須允許 VS Code 的 AWS IDE 延伸模組存取您的資料。

1. 輸入設定檔名稱、存取金鑰 ID 與私密存取金鑰，然後選取**繼續**。

1. 透過檢查 VS Code 中的 AWS Explorer，驗證您的 AWS 服務與資源的連線狀態。

如需有關使用長期憑證設定身分驗證的資訊，請參閱 [Using long-term credentials to authenticate AWS SDKs and tools](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-users.html)。

如需有關設定身分驗證的資訊，請參閱 AWS Toolkit for Visual Studio Code User Guide 中的 [AWS IAM credentials](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html)。

## 從主控台遷移至本機開發
<a name="moving-from-console-to-local-development"></a>

**注意**  
若您已在主控台進行變更，請在轉換至本機開發前，確認所有變更皆已部署完成。

若要將 Lambda 函式從 Lambda 主控台遷移至 VS Code，請完成下列步驟：

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

1. 選擇 函數的名稱。

1. 選取**程式碼來源**索引標籤。

1. 選擇**在 Visual Studio Code 中開啟**。
**注意**  
**在 Visual Studio Code 中開啟**按鈕僅在 AWS Toolkit **3.69.0** 版及更新版本中可用。若已安裝舊版 AWS Toolkit，則可能會在 VS Code 中看到一條訊息：`Cannot open the handler`。若要解決此問題，請將 AWS Toolkit 更新至最新版本。

1. 出現提示時，同意瀏覽器開啟 VS Code。

當您在 VS Code 中開啟函式時，Lambda 會在專為快速測試與部署而設計的臨時位置，使用函式程式碼建立一個本機專案。該專案包含函式程式碼、相依項以及可用於本機開發的基本專案結構。

如需有關在 VS Code 中使用 AWS 的詳細資訊，請參閱 *[AWS Toolkit for Visual Studio Code User Guide](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/welcome.html)*。

## 在本機使用函式
<a name="working-with-functions-locally"></a>

在 VS Code 中開啟函式後，請依照下列步驟存取和管理函式：

1. 選取側邊欄中的 AWS 圖示，開啟 AWS Explorer：  
![VS Code 側邊欄中的 AWS Toolkit 圖示](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/console-to-ide-awsIcon.png)

1. 在 AWS Explorer 中，選取包含 Lambda 函式的區域：  
![AWS Explorer 顯示區域選擇介面](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/console-to-ide-lambdaTreeView.png)

1. 在所選的區域下，展開 Lambda 區段，即可檢視並管理函式：  
![含部署、調用等動作圖示的 Lambda 函式](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/console-to-ide-lambdaActions.png)

在 VS Code 中開啟函式後，您可以：
+ 使用完整的語言支援與程式碼自動完成功能來編輯函式程式碼。
+ 透過 [VS Code 的 LocalStack 整合](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/lambda-localstack.html)功能，測試會在執行期間對其他 AWS 服務發起 API 呼叫的 Lambda 函式，例如從 DynamoDB 資料表讀取資料或寫入 Amazon S3 儲存貯體。LocalStack 是一種雲端服務模擬器，提供完整的本機開發環境來測試服務間的整合運作。您也可以[使用 AWS SAM CLI 在本機容器中測試函式](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-using-invoke.html)。如果函式對其他 AWS 服務發起 API 呼叫，這些呼叫會到達真正的 AWS 資源，而非模擬資源。
+ 透過中斷點與變數檢查功能進行函式偵錯。如需詳細資訊，請參閱 *AWS Toolkit for Visual Studio Code User Guide* 中的 [Running and debugging Lambda functions directly from code](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps-run-debug-no-template.html)。
+ 使用雲端圖示將更新後的函式部署回 AWS。
+ 安裝並管理函式的相依項。

如需詳細資訊，請參閱 AWS Toolkit for Visual Studio Code User Guide 中的 [Working with AWS Lambda functions](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html)。

## 將函式轉換為 AWS SAM 範本並使用 IaC 工具
<a name="integrating-with-infrastructure-as-code"></a>

在 VS Code 中，您可以選擇 Lambda 函式旁邊的**轉換為 AWS SAM 應用程式**圖示，將 Lambda 函式轉換為 AWS SAM 範本。系統會提示您選取 AWS SAM 專案位置。選取位置後，Lambda 函式會被轉換為儲存在新的 AWS SAM 專案中的 `template.yaml` 檔案。

將函式轉換為 AWS SAM 範本後，您可以：
+ 對基礎結構進行版本控制
+ 自動化部署流程
+ 遠端偵錯函式
+ 將其他 AWS 資源新增至應用程式
+ 在整個開發生命週期中維護一致的環境
+ 透過 Infrastructure Composer 視覺化編輯 AWS SAM 範本

如需有關使用 IaC 工具的詳細資訊，請參閱下列指南：
+ [AWS Serverless Application Model Developer Guide](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)
+ [AWS Cloud Development Kit (AWS CDK) Developer Guide](https://docs.aws.amazon.com/cdk/v2/guide/home.html)
+ [Infrastructure Composer Developer Guide](https://docs.aws.amazon.com/application-composer/latest/dg/what-is-composer.html)
+ [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)

這些工具提供其他定義、測試和部署無伺服器應用程式的功能。

## 後續步驟
<a name="next-steps"></a>

若要進一步了解如何在 VS Code 中使用 Lambda 函式，請參閱下列資源：
+ AWS Toolkit for VS Code User Guide 中的 [Working with AWS Lambda functions](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html)
+ AWS Toolkit for VS Code User Guide 中的 [Working with serverless applications](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/serverless-apps.html)
+ 《Lambda 開發人員指南》中的[基礎結構即程式碼](https://docs.aws.amazon.com/lambda/latest/dg/foundation-iac.html)