

# 使用 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 和基础设施编辑器无缝集成
+ **依赖项管理**：完全控制函数的依赖项

## 先决条件
<a name="lambda-functions-vscode-prerequisites"></a>

在 VS Code 中本地开发 Lambda 函数之前，必须具备：
+ **VS Code**：有关安装说明，请参阅[下载 VS Code](https://code.visualstudio.com/download)。
+ **AWS Toolkit for Visual Studio Code**：有关安装说明，请参阅[设置 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 SAMCLI](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-cli-install.html)。
+ **已安装 Docker（可选，但本地测试需要安装）**：有关安装说明，请参阅[获取 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. 通过以下网址打开 IAM 控制台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在导航窗格中，选择 **Users**（用户）。

1. 选择**创建用户**。

1. 在**用户名**中，输入一个名称，然后选择**下一步**。

1. 在**设置权限**下，选择**直接附加策略**。

1. 选择 **AdministratorAccess**，然后选择**下一步**。

1. 选择**创建用户**。

1. 在成功横幅中，选择**查看用户**。

1. 选择**创建访问密钥**。

1. 在**用例**中，选择**本地代码**。

1. 选中确认复选框，然后选择**下一步**。

1. （可选）输入一个描述标签值。

1. 选择**创建访问密钥**。

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\$1Shift\$1P 或 Windows/Linux 上为 Ctrl\$1Shift\$1P），然后搜索并选择 **AWS 添加新连接**。

1. 在登录面板中，选择 **IAM 凭证**，然后选择**继续**。
**注意**  
您需要允许 AWS IDE Extensions for VS Code 访问您的数据才能继续。

1. 输入配置文件名称、访问密钥 ID 和秘密访问密钥，然后选择**继续**。

1. 对于 AWS 服务和资源，请在 VS Code 中勾选 AWS Explorer 来验证连接。

有关使用长期凭证设置身份验证的信息，请参阅[使用长期凭证对 AWS SDK 及工具进行身份验证](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 中打开**。
**注意**  
**在 Visual Studio Code 中打开**按钮仅在 **3.69.0** 及更高版本的 AWS Toolkit 中可用。如果安装了早期版本的 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 用户指南](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_cn/lambda/latest/dg/images/console-to-ide-awsIcon.png)

1. 在 AWS Explorer 中，使用 Lambda 函数选择区域：  
![\[显示有区域选择的 AWS Explorer\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/console-to-ide-lambdaTreeView.png)

1. 在所选的区域下，展开 Lambda 部分以查看和管理函数：  
![\[带部署、调用等操作图标的 Lambda 函数\]](http://docs.aws.amazon.com/zh_cn/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 用户指南》**中的 [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 Code 中，可以通过选择 Lambda 函数旁边的**转换为 AWS SAM 应用程序**图标，将 Lambda 函数转换为 AWS SAM 模板。系统将提示您选择 AWS SAM 项目位置。选择后，您的 Lambda 函数将转换为一个 `template.yaml` 文件保存在新的 AWS SAM 项目中。

函数转换为 AWS SAM 模板后，您可以：
+ 对基础设施进行版本控制
+ 自动部署
+ 远程调试函数
+ 向应用程序额外添加 AWS 资源
+ 在整个开发生命周期中保持环境的一致性
+ 使用基础设施编辑器，以可视化方式编辑 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)
+ [基础设施编辑器开发人员指南](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)