开始使用无服务器应用程序 - AWS 适用于 VS Code 的工具包

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

开始使用无服务器应用程序

以下各节介绍了如何使用 AWS Serverless Application Model(AWS SAM)和 AWS CloudFormation 堆栈,开始从 AWS Toolkit for Visual Studio Code 创建 AWS Serverless Application。

先决条件

您必须满足以下先决条件,然后才能创建或使用 AWS Serverless Application。

注意

以下操作可能需要您在更改完成之前退出或重新启动 VS Code。

  • 安装 AWS SAM 命令行界面(CLI)。有关如何安装 AWS SAM CLI 的其他信息和说明,请参阅本《AWS Serverless Application Model 用户指南》中的安装 AWS SAM CLI 主题。

  • 在 AWS 配置文件中,识别您的默认 AWS 区域。有关配置文件的更多信息,请参阅《AWS Command Line Interface 用户指南》中的配置和凭证文件设置主题。

  • 安装语言 SDK 并配置工具链。有关如何从 AWS Toolkit for Visual Studio Code 配置工具链的更多信息,请参阅本用户指南中的配置工具链主题。

  • 从 VS Code Marketplace 安装 YAML 语言支持扩展。这是确保可访问 AWS SAM 模板的 CodeLens 功能所必需的。有关 CodeLens 的其他信息,请参阅 VS Code 文档中的 CodeLens 部分

无服务器应用程序的 IAM 权限

在 Toolkit for VS Code 中,您必须具有一个凭证配置文件,其中包含部署和运行无服务器应用程序所必需的 AWS Identity and Access Management(IAM)权限。您必须对以下服务具有适当的读/写权限:AWS CloudFormation、IAM、Lambda、Amazon API Gateway、Amazon Simple Storage Service(Amazon S3)和 Amazon Elastic Container Registry(Amazon ECR)。

有关设置部署和运行无服务器应用程序所需的身份验证的更多信息,请参阅《AWS Serverless Application Model 开发人员指南》中的 管理资源访问和权限。有关如何设置凭证的信息,请参阅本用户指南中的 AWS IAM 证书

创建新的无服务器应用程序(本地)

此流程演示了如何使用 AWS SAM 通过 Toolkit for VS Code 创建无服务器应用程序。此流程的输出是开发主机上的一个本地目录,其中包含一个示例无服务器应用程序,您可以构建、本地测试和修改该应用程序,并将其部署到 AWS Cloud 中。

  1. 要打开命令面板,请依次选择视图命令面板,然后输入 AWS

  2. 选择 AWS Toolkit 创建 Lambda SAM 应用程序

    “Command Palette (命令调色板)”对话框。
    注意

    如果没有安装 AWS SAM CLI,您将在 VS Code 编辑器的右下角收到一条错误消息。如果发生这种情况,请验证是否满足所有的 假设和先决条件

  3. 为 AWS SAM 应用程序选择运行时系统。

    注意

    如果您选择一个带有“(图像)”的运行时,则您的应用程序是 Image 型软件包。如果您选择一个不带有“(图像)”的运行时,则您的应用程序是 Zip 型。有关 ImageZip 软件包类型差异的更多信息,请参阅 AWS Lambda 开发人员指南中的 Lambda 部署软件包

  4. 根据您选择的运行时,您可能需要为 SAM 应用程序选择依赖项管理器和运行时架构。

    Dependency Manager

    选择 GradleMaven

    注意

    这个构建自动化工具的选择仅适用于 Java 运行时。

    Architecture

    选择 x86_64arm64

    以下运行时系统可选择在基于 ARM64 的模拟环境中,而不是在默认的基于 x86_64 的环境中运行无服务器应用程序:

    • nodejs12.x(ZIP 和图像)

    • nodejs14.x(ZIP 和图像)

    • python3.8(ZIP 和图像)

    • python3.9(ZIP 和图像)

    • python3.10(ZIP 和图像)

    • python3.11(ZIP 和图像)

    • 带有 Gradle 的 java8.al2(ZIP 和图像)

    • 带有 Maven 的 java8.al2(仅限 ZIP)

    • 带有 Gradle 的 java11(ZIP 和图像)

    • 带有 Maven 的 java11(仅限 ZIP)

    重要

    必须安装 AWS CLI 版本 1.33.0 或更高版本,以便应用程序在基于 ARM64 的环境中运行。有关更多信息,请参阅 先决条件

  5. 为新项目选择一个位置。您可以使用现有工作区文件夹(如果已打开一个此类文件夹),Select a different folder (选择已存在的其他文件夹),或创建新文件夹并将其选中。对于此示例,选择 There are no workspace folders open (没有打开的工作区文件夹) 以创建名为 MY-SAM-APP 的文件夹。

  6. 输入新项目的名称。对于本示例,请使用 my-sam-app-nodejs。按下 Enter 键后,Toolkit for VS Code 需要几分钟才能创建项目。

创建项目后,应用程序将添加到当前工作区中。您应该看到它在 Explorer 窗口中列出。

打开无服务器应用程序(本地)

要在本地开发主机上打开无服务器应用程序,请打开包含该应用程序的模板文件的文件夹。

  1. 文件中选择打开文件夹…

  2. 打开文件夹对话框中,导航到要打开的无服务器应用程序文件夹。

  3. 选择选择文件夹按钮。

当您打开应用程序的文件夹时,它会被添加到资源管理器窗口中。

从模板(本地)运行和调试无服务器应用程序

您可以使用 Toolkit for VS Code 配置如何调试无服务器应用程序,并在开发环境中本地运行它们。

您开始通过使用 VS Code CodeLens 功能来识别符合条件的 Lambda 函数,以配置调试行为。CodeLens 支持与您的源代码进行内容感知型交互。有关确保您可以访问 CodeLens 功能的信息,请查看本主题前面的 先决条件 部分。

注意

在此示例中,您使用 JavaScript 调试应用程序。但是,您可以使用具有以下语言和运行时系统的 Toolkit for VS Code 调试功能:

  • C#:.NET Core 2.1, 3.1;.NET 5.0

  • JavaScript/TypeScript:Node.js 12.x、14.x

  • Python:3.6、3.7、3.8、3.9、3.10、3.11

  • Java:8、8.al2、11

  • Go:1.x

您的语言选择还会影响 CodeLens 检测符合条件的 Lambda 处理程序的方式。有关更多信息,请参阅 直接通过代码运行和调试 Lambda 函数

在此流程中,您需要使用在本主题前面的 创建新的无服务器应用程序(本地) 部分中创建的示例应用程序。

  1. 要在 VS Code 的文件资源管理器中查看应用程序文件,请依次选择视图资源管理器

  2. 从应用程序文件夹(如 my-sample-app(我的样本应用程序)),打开 template.yaml 文件。

    注意

    如果您使用的模板名称与 template.yaml 不同,则 CodeLens 指示器不会在 YAML 文件中自动可用。这意味着您必须手动添加调试配置。

  3. template.yaml 的编辑器中,转到模板中定义无服务器资源的 Resources 部分。在本例中,这是类型 AWS::Serverless::FunctionHelloWorldFunction 资源。

    在此资源的 CodeLens 指示器中,选择添加调试配置

    使用文件中的 template.yaml CodeLens 指示器来添加调试配置。
  4. 命令面板中,选择将运行您的 AWS SAM 应用程序的运行时系统。

  5. launch.json 文件的编辑器中,编辑或确认以下配置属性的值:

    • "name" – 输入一个易于阅读的名称,以显示在 Run(运行)视图中的 Configuration(配置)下拉字段中。

    • "target":确保该值为 "template",以便 AWS SAM 模板成为调试会话的入口点。

    • "templatePath" – 输入 template.yaml 文件的相对路径或绝对路径。

    • "logicalId":确保名称与 AWS SAM 模板的资源部分中指定的名称一致。在这种情况下,它是类型 AWS::Serverless::FunctionHelloWorldFunction

    配置 launch.json 文件以进行基于模板的调试。

    有关 launch.json 文件中这些以及其他条目的更多信息,请参阅 调试无服务器应用程序的配置选项

  6. 如果您对调试配置满意,请保存 launch.json。然后,选择运行视图旁边的“播放”按钮以启动调试。

    当调试会话启动时,DEBUG CONSOLE(调试控制台)面板显示调试输出,并显示 Lambda 函数返回的任何值。(调试 AWS SAM 应用程序时,AWS Toolkit输出面板中被选择作为输出通道。)

同步 AWS SAM 应用程序

AWS Toolkit for Visual Studio Code 运行 AWS SAM CLI 命令 sam sync,以将您的无服务器应用程序部署到 AWS Cloud。有关 AWS SAM 同步的更多信息,请参阅《AWS Serverless Application Model 用户指南》中的 AWS SAM CLI 命令参考主题。

以下流程将介绍如何从 Toolkit for VS Code 使用 sam sync 将您的无服务器应用程序部署到 AWS Cloud。

  1. 在 VS Code 内的主菜单中,展开视图并选择命令面板,以打开命令面板

  2. 命令面板中搜索 AWS 并选择同步 SAM 应用程序,以开始设置同步。

    同步无服务器应用程序的命令。
  3. 选择要将您的无服务器应用程序同步到的 AWS 区域。

  4. 选择要用于部署的 template.yaml 文件。

  5. 选择现有的 Amazon S3 存储桶或输入新的 Amazon S3 存储桶名称,以便将您的应用程序部署到其中。

    重要

    Amazon S3 存储桶包必须符合以下要求:

    • 存储桶必须位于您要同步到的区域中。

    • Amazon S3 存储桶名称在 Amazon S3 中的所有现有存储桶名称之间必须是全局唯一的。

  6. 如果您的无服务器应用程序包含具有类型 Image 的函数,输入此部署可使用的 Amazon ECR 存储库的名称。存储库必须位于您要部署到的区域中。

  7. 从之前的部署列表中选择部署堆栈,或者通过输入新的堆栈名称来创建新的部署堆栈。然后,继续操作以开始同步流程。

    注意

    先前部署中使用的堆栈会按工作空间和区域召回。

  8. 在同步流程期间,部署状态会在 VS Code 的终端选项卡中捕获。从“终端”选项卡验证同步是否成功,如果出现错误,您会收到通知。

    部署无服务器应用程序时显示的错误弹出窗口。
    注意

    有关同步的更多详细信息,可从命令面板访问 AWS Toolkit for Visual Studio Code 日志。

    要从“命令面板”访问您的 AWS Toolkit for Visual Studio Code 日志,请展开视图,选择命令面板,然后搜索 AWS: View AWS Toolkits Logs 并在列表中填充日志时将其选中。

一旦完成部署,您将看到 AWS Explorer 窗口中列出了您的应用程序。有关如何调用作为应用程序的一部分创建的 Lambda 函数的更多信息,请参阅本《用户指南》中的 与远程 Lambda 函数交互 主题。

从 AWS Cloud 中删除无服务器应用程序

删除无服务器应用程序涉及删除之前部署到 AWS 云的 AWS CloudFormation 堆栈。请注意,此过程不会从本地主机中删除您的应用程序目录。

  1. 打开 AWS 探险家

  2. AWS Toolkit Explorer 窗口中,展开包含您想要删除的已部署应用程序的区域,然后展开 AWS CloudFormation

  3. 打开与要删除的无服务器应用程序对应的 AWS CloudFormation 堆栈的名称的上下文菜单(右键单击),然后选择删除 AWS CloudFormation 堆栈

  4. 要确认删除已选择的堆栈,请选择

如果堆栈删除成功,Toolkit for VS Code 将从 AWS Explorer 中的 AWS CloudFormation 列表中移除堆栈名称。