

 AWS Cloud9 不再向新客户提供。 AWS Cloud9 的现有客户可以继续正常使用这项服务。[了解详情](https://aws.amazon.com/blogs/devops/how-to-migrate-from-aws-cloud9-to-aws-ide-toolkits-or-aws-cloudshell/)

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 AWS 工具包处理 AWS Lambda 函数
<a name="lambda-toolkit"></a>

该 AWS 工具包支持[AWS Lambda](https://aws.amazon.com/lambda/)功能。该 AWS 工具包取代了以前由 Lambda 插件提供的功能。 AWS Cloud9使用该 AWS 工具包，您可以为[无服务器](https://aws.amazon.com/serverless/)应用程序中的 Lambda 函数编写代码。此外，您可以在本地或在 AWS上调用 Lambda 函数。

Lambda 是完全托管的计算服务，该服务运行您的代码以响应由自定义代码生成的或来自各种 AWS 服务的事件。这些服务包括 Amazon Simple Storage Service（Amazon S3）、Amazon DynamoDB、Amazon Kinesis、Amazon Simple Notification Service（Amazon SNS）和 Amazon Cognito。

**重要**  
如果要构建使用 Serverless Application Model（SAM）提供的资源的 Lambda 应用程序，请参阅[AWS SAM 使用 AWS 工具包](serverless-apps-toolkit.md)。

**Topics**
+ [调用远程 Lambda 函数](#remote-lambda)
+ [下载、上传和删除 Lambda 函数](#import-upload-delete-lambda)

## 调用远程 Lambda 函数
<a name="remote-lambda"></a>

使用该 AWS 工具包，您可以通过各种方式与[AWS Lambda](https://aws.amazon.com/lambda/)函数进行交互。

有关 Lambda 的更多信息，请参阅 [AWS Lambda 开发人员指南](https://docs.aws.amazon.com/lambda/latest/dg/)。

**注意**  
假设您已经通过使用 AWS 管理控制台 或以其他方式创建了 Lambda 函数。您可以从 AWS 工具包中调用它们。要使用 AWS Toolkit 创建可部署到的新函数 AWS Lambda，必须先[创建一个无服务器应用程序](serverless-apps-toolkit.md#sam-create)。

### 先决条件
<a name="remote-lambda-prereq"></a>
+ 确保您在中配置的凭据包含对服务的相应读/写访问权限。 AWS Lambda 如果在 **AWS Explorer** 中的 **Lambda** 下，您看到类似于“Error loading Lambda resources”（加载 Lambda 资源时出错）的消息，请检查附加到这些凭证的权限。对权限所做的更改需要几分钟时间才会对 AWS Toolkit 中的 **AWS Explorer** 生效。

### 调用 Lambda 函数
<a name="invoke-lam-func"></a>

**重要**  
使用 AWS Toolkit 调用 API 方法可能会导致无法撤消的资源更改。例如，如果您调用 `POST` 方法，则调用成功时，API 的资源将更新。

您可以在 AWS 使用工具包时调用 Lambda 函数。 AWS 

****

1. 在 **AWS Explorer** 中，选择要调用的 Lambda 函数的名称，然后打开其上下文菜单。

1. 选择 “**开启调用” AWS**。

1. 在打开的 **Invoke function（调用函数）**窗口中，为 Lambda 函数所需的负载选择一个选项。（该负载为您想要作为输入提供到您的 Lambda 函数的 JSON。） 您可以选择 **Browse**（浏览）来选择要用作负载的文件，或使用下拉字段为负载选择模板。在这种情况下，Lambda 函数可能会将字符串显示为输入，如文本框所示。

选择 **Invoke（调用）**来调用 Lambda 并传入负载。

您可以在选项卡中看到 Lambda 函数的 AWS Lambda 输出。

## 下载、上传和删除 Lambda 函数
<a name="import-upload-delete-lambda"></a>

该 AWS 工具包提供了在 IDE 中导入和上传 Lambda 函数的 AWS Cloud9 选项。

### 下载 Lambda 函数
<a name="w2aac28c32c13b5"></a>

通过下载 Lambda 函数，您还可以从 AWS 云端下载描述该函数的项目文件，并在 IDE 中使用这些文件。 AWS Cloud9 

### 下载 Lambda 函数


1. 在 **AWS Explorer** 中的 Lambda 节点下，打开函数的上下文（右键单击）菜单，然后选择 **Download**（下载）。

1. 当被要求 **Select a workspace folder for your new project（为新项目选择工作区文件夹）**，您可以执行下列操作之一：
   + 选择建议创建与 Lambda 项目名称相同子文件夹的文件夹。
   + 选择 **Select a different folder（选择其他文件夹）**打开一个对话框，为项目子文件夹浏览并选择其他父文件夹。

   IDE 将打开一个新的编辑器窗口。

### 配置下载的 Lambda 函数以运行和调试
<a name="w2aac28c32c13b7"></a>

要将下载的 Lambda 函数作为无服务器应用程序运行和调试，需要在 `launch.json` 文件中定义启动配置。在中创建的 Lambda 函数 AWS 管理控制台 可能不包含在启动配置中。因此，您需要手动添加它。

### 将 Lambda 函数添加到启动配置


1. 下载 Lambda 函数后，打开 **Environment**（环境）窗口以查看其文件夹和文件。

1. 接下来，检查 Lambda 函数是否包含在 `/home/ec2-user/.c9/launch.json` 文件中。如果它不存在，请执行以下操作以添加 CodeLens 指向函数代码的链接：

   1. 打开定义 Lambda 函数的源代码文件（例如，`.js` 或 `.py` 文件）。然后，检查是否有可用于将 lambda 函数添加到`launch.json`文件中的 CodeLens 链接。A CodeLens 显示在函数上方并包含`Add Debug Config`链接。

   1. 选择 IDE 左侧的 **Go**（转到）（放大镜图标），然后输入“sam hint”以显示 `AWS: Toggle SAM hints in source files` 命令。选择此命令以运行。

   1. 关闭 Lambda 源代码文件，然后重新打开它。

   1. 如果重新打开文件后源代码中可用，`Add Debug Config`请选择添加启动配置。 CodeLens 

1. 如果在切换 SAM 提示选项后无法添加 CodeLens 偶数，请执行以下操作来添加启动配置：

   1. 选择 IDE 左侧的 **Go**（转到）（放大镜图标），然后键入“config”以显示 `AWS: SAM Debug Configuration Editor` 命令。选择此命令以运行。

   1. 此时将显示 **SAM Debug Configuration Editor**（SAM 调试配置编辑器）。您可以使用此编辑器定义启动配置属性。有关信息，请参阅[使用 SAM 模板运行和调试无服务器应用程序](serverless-apps-toolkit.md#sam-run-debug-template)中用于[configuring launch properties](serverless-apps-toolkit.md#properties)的步骤。
**注意**  
如果 Lambda 函数没有 SAM 应用程序的 `template.yaml`，则需要添加一个。有关更多信息，请参阅[创建 AWS SAM 模板](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-lambda-sam-template.html)。

   1. 在编辑器中输入所需的配置信息后，启动配置将添加到 **launch.json** 文件中。

在为 Lambda 函数定义启动配置后，您可以通过执行以下操作来运行它：

1. 在 IDE 顶部，选择 **Auto**（自动）旁边的箭头，然后选择相关的启动配置。

1. 接下来，选择 **Run**（运行）。

### 上传 Lambda 函数
<a name="w2aac28c32c13b9"></a>

您可以使用本地代码更新现有的 Lambda 函数。以这种方式更新代码不会使用 AWS Serverless Application Model CLI 进行部署，也不会创建 AWS CloudFormation 堆栈。通过这种方法，您可以使用 Lambda 支持的任何运行时上传 Lambda 函数。

有多种接口选项可用于使用该 AWS 工具包上传 Lambda 函数。

#### 从 **Environment**（环境）窗口或 **Command pane**（命令窗格）上载
<a name="upload-lambda-from-environment"></a>

1. 在项目文件的 **Environment**（环境）窗口中，选择要上载的 Lambda 应用程序的 `template.yaml` 的上下文（右键单击）菜单，然后选择 **Upload Lambda**（上传 Lambda）。

   或者，按 **Ctrl\$1P** 以打开**转到任意内容**窗格，然后输入“lambda”以访问 **AWS 上传 Lambda** 命令。接下来，选择它以开始上载过程。

1. 接下来 AWS 区域 ，选择要上传到的。

1. 现在，选择用于上载 Lambda 函数的选项：

   **上传 zip 格式归档**

   1. 从菜单中选择 **ZIP Archive（ZIP 格式归档）**。

   1. 从文件系统中选择一个.zip AWS Cloud9 文件，然后选择 “**打开**”。

   **按原样上载目录**

   1. 从菜单中选择 **Directory（目录）**。

   1. 从 AWS Cloud9 文件系统中选择一个目录，然后选择 “**打开**”。

1. 指定处理事件的 Lambda 函数处理程序。当调用函数时，Lambda 运行此处理程序方法。
**注意**  
选择 Lambda 函数时，您可以从显示的列表中进行选择。如果您不知道要选择哪个函数，可以输入此 Toolkit 中提供的 Lambda 函数的 Amazon 资源名称（ARN）。

   将显示一个对话框，询问您是否希望将此代码发布为 Lambda 函数的最新版本。选择 **Yes**（是）以确认发布。
**注意**  
您还可以打开该文件夹的父文件夹上下文（右键单击）菜单，然后选择 **Upload Lambda**（上传 Lambda）来上传 Lambda 应用程序。将自动选择该父文件夹进行上传。

#### 从 **AWS Explorer** 上载
<a name="upload-lambda-from-explorer"></a>

1. 在 **AWS Explorer**中，在要导入的 Lambda 函数的名称上打开上下文（右键单击）菜单。

1. 选择 **Upload Lambda**（上载 Lambda）。

1. 从上传 Lambda 函数的三个选项中进行选择。

   **上载预先制作的 zip 格式归档**

   1. 从菜单中选择 **ZIP Archive（ZIP 格式归档）**。

   1. 从文件系统中选择一个.zip AWS Cloud9 文件，然后选择 “**打开**”。

   1. 使用模态对话框确认上传。这将上传 .zip 格式文件，并在部署后立即更新 Lambda。

   **按原样上载目录**

   1. 从菜单中选择 **Directory（目录）**。

   1. 从 AWS Cloud9 文件系统中选择一个目录，然后选择 “**打开**”。

   1. 当系统提示构建目录时，选择 **No（否）**。

   1. 使用模态对话框确认上传。这将按原样上传目录，并在部署后立即更新 Lambda。

   **构建和上载目录**

   1. 从菜单中选择 **Directory（目录）**。

   1. 从 AWS Cloud9 文件系统中选择一个目录，然后选择 “**打开**”。

   1. 当系统提示构建目录时，选择 **Yes（是）**。

   1. 使用模态对话框确认上传。这将使用 AWS SAM CLI `sam build` 命令在目录中构建代码，并在部署后立即更新 Lambda。

### 部署 Lambda 函数以进行远程访问
<a name="w2aac28c32c13c11"></a>

您可以通过将本地函数部署为无服务器 SAM 应用程序来远程使用它们。

### 将 Lambda 函数部署为 SAM 应用程序


1. 在 **AWS Explorer** 中，打开 **Lambda** 节点的上下文（右键单击）菜单，然后选择 **Deploy SAM Application**（部署 SAM 应用程序）。

1. 在命令窗格中，选择将函数定义为无服务器应用程序的 [YAML template](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-specification-template-anatomy.html)（YAML 模板）。

1. 接下来，选择 Amazon S3 存储桶来进行 Lambda 部署。也可以选择创建存储桶来进行部署。

1. 现在输入要部署到的 CloudFormation 堆栈的名称。如果指定现有堆栈，则该命令将更新堆栈。如果指定了新堆栈，则该命令将创建它。

   输入堆栈的名称后，Lambda 函数会开始部署为 SAM 应用程序。成功部署后，SAM Lambda 应用程序可以远程使用。这样，您就可以从其他 AWS Cloud9 开发环境下载或调用它。

如果您想从头开始创建 Lambda 函数，我们建议按照以下步骤操作以[使用 Toolkit 创建无服务器应用程序 AWS](serverless-apps-toolkit.md#create-serverless-app)。

### 删除 Lambda 函数
<a name="delete-lambda"></a>

您也可以使用相同的上下文（右键单击）菜单删除 Lambda 函数。

**警告**  
请勿使用此过程删除与 [CloudFormation](https://docs.aws.amazon.com/cloudformation/) 关联的 Lambda 函数。例如，不要删除本指南前文中[创建无服务器应用程序](serverless-apps-toolkit.md#sam-create)时创建的 Lambda 函数。这些函数必须通过 CloudFormation 堆栈删除。

****

1. 在 **AWS Explorer** 中，选择要删除的 Lambda 函数的名称，然后打开其上下文（右键单击）菜单。

1. 选择**删除**。

1. 在出现的消息中，选择 **Yes（是）**以确认删除。

删除此函数后，它不再在 **AWS Explorer** 视图中列出。