使用无服务器应用程序 - AWSToolkit for VS Code

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

使用无服务器应用程序

这些区域有:AWS Toolkit for Visual Studio Code提供对的支持无服务器应用程序. 使用适用于 VS Code 的 Toolkit,您可以创建包含AWS Lambda函数,然后将应用程序部署到AWS CloudFormation堆。

假设和先决条件

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

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

有关确保您具备部署和运行无服务器应用程序所需的权限的信息,请参阅Permissions (权限)中的AWS Serverless Application Model开发人员指南. 有关如何设置凭证配置文件的信息,请参阅设置您的AWS证书.

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

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

  1. 打开命令调色板,选择查看命令调色板,然后输入AWS.

  2. 选择AWS工具包创建 Lambda SAM 应用程序.

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

    如果AWS SAMCLI 未安装,您在VS Code 编辑器的右下角收到错误。如果发生这种情况,请确认您已满足所有假设和先决条件.

  3. 选择适合您的运行时AWS SAM应用程序.

    注意

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

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

    Dependency Manager

    在两者之间选择Gradle要么玛文.

    注意

    此生成自动化工具选择仅适用于 Java 运行时。

    Architecture

    在两者之间选择x86_64要么arm64.

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

    • nodejs12.x (邮政编码和图片)

    • nodejs14.x (邮政编码和图片)

    • python3.8(ZIP 和图片)

    • python3.9(ZIP 和图片)

    • java2 和 Gradle(ZIP 和图像)

    • java2 和 Maven(仅限 ZIP)

    • 带有 Gradle 的 java11(邮编和图片)

    • 使用 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. File (文件),选择打开文件夹....

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

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

当您打开应用程序的文件夹时,该文件夹会被添加到探险者窗口。

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

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

您开始使用 VS 代码配置调试行为CodeLens功能来标识符合条件的 Lambda 函数。 CodeLens 启用与源代码的内容感知交互。有关确保您可以访问 CodeLens 功能,查看假设和先决条件本主题前面的。

注意

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

  • C#-.NET Core 2.1, 3.1; .NET 5.

  • JavaScript/TypeScript — Node.js 12.x,14。x

  • Python-2.7, 3.8, 3.8, 3.8, 3.8, 3.8)

  • 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定义无服务器资源的模板部分。在本例中,HelloWorldFunction资源类型AWS::Serverless::Function.

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

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

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

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

    • "target"— 确保值为"template"以便AWS SAMtemplate 是调试会话的入口点。

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

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

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

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

  6. 如果您对调试配置满意,请保存 launch.json。然后,要开始调试,请在运行查看。

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

将无服务器应用程序部署到AWS云

此示例演示如何部署上一部分创建的无服务器应用程序(创建新的无服务器应用程序(本地)) 转到AWS云使用 VS Toolkit for VS Code

在执行部署之前,请确保涵盖以下项目:

  • 对于具有部署类型的应用程序Zip,请确保拥有用于部署的全局唯一的 Amazon S3 存储桶名称以用于部署。

  • 对于具有部署类型的应用程序Image,请确保拥有全局唯一的 Amazon S3 mazon ECR 存储桶名称和用于部署的 Amazon ECR 存储桶名称和用于部署的 Amazon ECR 存储库 URI。

有关 Lambda 包类型的更多信息,请参阅Lambda 部署程序包中的AWS Lambda开发人员指南.

要部署无服务器应用程序,请执行以下步骤:

  1. 打开命令调色板,选择查看命令调色板,然后输入AWS.

  2. 选择AWS工具包部署 SAM 应用程序.

    
            部署无服务器应用程序的命令。
  3. 选择要用于部署的 template.yaml 文件。

  4. 选择AWS要部署到的区域。

  5. 输入此部署可使用的 Amazon S3 存储桶的名称。存储桶必须位于您要部署到的区域中。

    警告

    Amazon S3 存储桶名称在 Amazon S3 中的所有现有存储桶名称之间必须是全局唯一的。因此,您应向以下示例给出的名称添加唯一标识符,或选择其他名称。

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

  7. 输入已部署堆栈的名称:新堆栈名称或现有堆栈名称。

  8. 在上验证部署是否成功输出VS 代码的选项卡。

    如果发生错误,将在右下角弹出一条与以下内容类似的消息:

    
            部署无服务器应用程序时错误弹出窗口。

    如果发生这种情况,请查看 OUTPUT (输出) 选项卡中的文本以了解详细信息。以下是错误详细信息的示例:

    Error with child process: Unable to upload artifact HelloWorldFunction referenced by CodeUri parameter of HelloWorldFunction resource. S3 Bucket does not exist. Execute the command to create a new bucket AWS s3 mb s3://pbart-my-sam-app-bucket An error occurred while deploying a SAM Application. Check the logs for more information by running the "View AWS Toolkit Logs" command from the Command Palette.

    在此示例中,出现错误的原因是 Amazon S3 存储桶不存在。

    如果出现错误,您还可以查看AWS Toolkit使用命令组件面板进行日志。为此,请转到查看菜单中,选择命令调色板,输入AWS,然后选择AWS工具包视图AWS Toolkit日志.

一旦完成部署,您将看到AWS探险者. 要了解如何调用作为应用程序的一部分创建的 Lambda 函数,请参阅 与远程 Lambda 函数进行交互

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

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

  1. 打开 AWS Explorer

  2. AWS工具包资源管理器窗口中,展开包含希望删除的已部署应用程序的区域,然后展开AWS CloudFormation.

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

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

如果堆栈删除成功,Toolkit for VS Code e 的堆栈名称将从AWS CloudFormationlist inAWS探险者.