构建一个基本的 Web 应用程序

教程

模块 2:构建无服务器函数

在此模块中,我们将使用 AWS Lambda 构建无服务器函数

概览

在此模块中,您将在 Python、JavaScript 或 Java 中编写一小段代码,以在后面的模块中用于将交互添加到网页中。您将使用 AWS Lambda,这是一项计算服务,让您能够创建无服务器函数的计算服务,无需管理软件和硬件。反之,应用程序将分为各个函数,可以分别调用和扩展。

这些无服务器函数基于您将在代码中定义的特定事件触发。它还是一个非常经济实惠的服务,因为您只需为处理的事件数量付费,而无需为闲置时间付费。最重要的是,您必须再担心管理任何服务器。

您将学到的内容

在本模块中,您将:

  • 使用 AWS 管理控制台(用 Python、JavaScript 或 Java)从头开始创建 Lambda 函数
  • 在 AWS 管理控制台中创建(JSON)事件以测试函数

重要概念

计算服务:提供计算处理能力的服务。

无服务器函数:将由计算服务按需执行的代码段。

Lambda 触发器:将进行 Lambda(无服务器)函数运行的事件类型。它可以是另一个 AWS 服务或外部输入。

 最短完成时间

5 分钟

 使用的服务

 上次更新日期

2023 年 4 月 4 日

实施

    • Python
      1. 在新的浏览器选项卡中,登录 AWS Lambda 控制台
      2. 请确保创建函数的区域与在上一模块中创建 Web 应用程序的区域相同。您可以在页面最顶部您的账户名称旁看到此信息。
      3. 选择橙色的创建函数按钮。
      4. 函数名称下,输入 HelloWorldFunction
      5. 运行时系统下拉列表中选择 Python 3.8,其余默认值保持不变。

      6.选择橙色的创建函数按钮。

      7.您应该在屏幕顶部看到一个绿色消息框,上面显示以下消息:“已成功创建函数 HelloWorldFunction。”

      8.在代码源下,将 lambda_function.py 中的代码替换为以下代码:

      # import the JSON utility package since we will be working with a JSON object
      import json
      # define the handler function that the Lambda service will use as an entry point
      def lambda_handler(event, context):
      # extract values from the event object we got from the Lambda service
          name = event['firstName'] +' '+ event['lastName']
      # return a properly formatted JSON object
          return {
          'statusCode': 200,
          'body': json.dumps('Hello from Lambda, ' + name)
          }

      9.转到文件菜单并选择保存以保存更改。

      10.选择部署以部署更改。

      11.我们来测试新函数。选择橙色的测试按钮,通过选择配置测试事件来创建测试事件。

      12.在事件名称中,输入 HelloWorldTestEvent

      13.复制并粘贴以下 JSON 对象,以替换默认对象:

      {
      "firstName": "Ada",
      "lastName": "Lovelace"
      }

      14.选择页面底部的保存按钮。

    • JavaScript
      1. 在新的浏览器选项卡中,登录 AWS Lambda 控制台
      2. 请确保创建函数的区域与在上一模块中创建 Web 应用程序的区域相同。您可以在页面最顶部您的账户名称旁看到此信息。
      3. 选择橙色的创建函数按钮。
      4. 函数名称下,输入 HelloWorldFunction
      5. 运行时系统下拉列表中选择 Node.js 16.x,其余默认值保持不变。

      6.选择橙色的创建函数按钮。

      7.您应该在屏幕顶部看到一个绿色消息框,上面显示以下消息:“已成功创建函数 HelloWorldFunction。”

      8. 在代码源下,将 index.js 中的代码替换为以下代码:

      // Define handler function, the entry point to our code for the Lambda service
      // We receive the object that triggers the function as a parameter
      exports.handler = async (event) => {
          // Extract values from event and format as strings
          let name = JSON.stringify(`Hello from Lambda, ${event.firstName} ${event.lastName}`);
          // Create a JSON object with our response and store it in a constant
          const response = {
              statusCode: 200,
              body: name
          };
          // Return the response constant
          return response;
      };

      9. 选择位于代码编辑器顶部橙色测试按钮旁边的部署按钮。

      10. 选择位于代码编辑器顶部的橙色测试按钮。

      11.在事件名称下,输入 HelloWorldTestEvent

      12.复制并粘贴以下 JSON 对象,以替换默认对象:

      {
      "firstName": "Ada",
      "lastName": "Lovelace"
      }

      13. 选择保存按钮以创建测试事件。

      14. 再次选择橙色的测试按钮,运行测试事件。结果将显示在代码编辑器的执行结果部分。

    • Java
      1. 在新的浏览器选项卡中,登录 AWS Lambda 控制台
      2. 请确保创建函数的区域与在上一模块中创建 Web 应用程序的区域相同。您可以在页面最顶部您的账户名称旁看到此信息。
      3. 选择橙色的创建函数按钮。
      4. 函数名称下,输入 HelloWorldFunction
      5. 运行时系统下拉列表中选择 Java 11(Corretto),其余默认值保持不变。

      6.选择橙色的创建函数按钮。

      7.您应该在屏幕顶部看到一个绿色消息框,上面显示以下消息:“已成功创建函数 HelloWorldFunction。”

      8.您现在已使用名为 Hello 的句柄类创建 Lambda 函数。 由于 Java 是编译语言,您无法在 Lambda 控制台中查看或编辑源代码,但您可以修改其配置、调用它并配置触发器。

      9.要更新函数的代码,您需要创建部署包,它是包含您的函数代码的 JAR 文件或 ZIP 存档。在此教程中,我们为可下载的 JAR 文件提供了更新的函数代码。

      10.转至函数代码并更新 JAR 文件。

      11.将句柄更新到 com.example.app.LambdaRequestHandler::handleRequest

      12.选择屏幕顶部的橙色保存按钮。

      13.选择屏幕顶部的选择测试事件以测试新功能。

      14.从该下拉菜单中,选择配置测试事件

      15.在事件名称下,输入 HelloWorldTestEvent

      16.复制并粘贴以下 JSON 对象,以替换默认对象:

      {
      "firstName": "Ada",
      "lastName": "Lovelace"
      }

      17.单击页面底部的橙色创建按钮。

    1. 在页面顶部的 HelloWorldFunction 部分下,选择测试选项卡。
    2. 您应在页面顶部看到一个浅绿色框,其中显示以下文本:执行结果:成功。 您可以选择详细信息以查看函数返回的事件。
    3. 做得好! 现在您已经有运行中的 Lambda 函数。

应用程序架构

现在,我们已完成此模块,架构如下所示:

显示托管在 AWS Cloud 中,并与 Amplify 外部用户建立连接的 AWS Amplify 和 AWS Lambda 的架构图。

您将注意到,我们在图表中添加了 AWS Lambda 服务,但它还没有与 AWS Amplify 或我们的用户连接。我们将在下一个模块中建立此链接。

此页内容对您是否有帮助?

将无服务器函数与 Web 应用程序链接