

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

# 使用 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 登入**資料：如需設定登入資料的相關資訊，請參閱[設定您的 AWS 登入](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/setup-credentials.html)資料。
+ **AWS SAM CLI**：如需安裝說明，請參閱[安裝 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 使用者指南》中的在 AWS 帳戶中建立 IAM 使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html)和[管理 IAM 使用者的存取金鑰](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 程式碼的 AWS IDE 延伸存取您的資料。

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

1. 檢查 AWS 您服務和資源的 VS Code 中的 AWS Explorer 來驗證連線。

如需使用長期憑證設定身分驗證的資訊，請參閱[使用長期憑證來驗證 AWS SDKs和工具](https://docs.aws.amazon.com/sdkref/latest/guide/access-iam-users.html)。

如需有關設定身分驗證的資訊，請參閱 AWS Toolkit for Visual Studio Code 《 使用者指南》中的 [AWS IAM 登入](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 中開啟**。
**注意**  
**Open in Visual Studio Code** 按鈕僅適用於 AWS Toolkit **3.69.0** 版及更新版本。如果您已安裝舊版的 AWS Toolkit，您可能會在 VS 程式碼中看到`Cannot open the handler`訊息。若要解決此問題，請將您的 AWS Toolkit 更新至最新版本。

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

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

如需在 VS 程式碼 AWS 中使用 的詳細資訊，請參閱 *[AWS Toolkit for Visual Studio Code 使用者指南](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：  
![AWS VS 程式碼側邊欄中的工具組圖示](http://docs.aws.amazon.com/zh_tw/lambda/latest/dg/images/console-to-ide-awsIcon.png)

1. 在 AWS Explorer 中，選取具有 Lambda 函數的區域：  
![AWS 檔案總管顯示區域選擇](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)。如果您的函數對其他 發出 API 呼叫， AWS 服務 這些呼叫將到達實際 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 《 使用者指南》中的[使用 AWS Lambda 函數](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 程式碼中，您可以選擇 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 開發人員指南](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/what-is-sam.html)
+ [AWS Cloud Development Kit (AWS CDK) 開發人員指南](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 使用者指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)

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

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

若要進一步了解如何在 VS Code 中使用 Lambda 函式，請參閱下列資源：
+ 《 AWS Toolkit for VS Code 使用者指南》中的[使用 AWS Lambda 函數](https://docs.aws.amazon.com/toolkit-for-vscode/latest/userguide/building-lambda.html) 
+ 《 AWS Toolkit for VS Code 使用者指南》中的[使用無伺服器應用程式](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)