开始使用 AWS

构建基本 Web 应用程序

部署 Web 应用程序并添加与 API 和数据库的交互

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

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

简介

在此模块中,您将在 Python、JavaScript 或 Java 中编写一小段代码,以在后面的模块中用于将交互添加到网页中。您将使用 AWS Lambda 服务,该服务是一项计算服务,可使我们创建无服务器函数。(“无服务器函数”消除了开发人员进行软件和硬件管理的需要。反之,应用程序将分为各个函数,可以分别调用和扩展。)

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

您将学到的内容

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

重要概念

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

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

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

 完成时间

5 分钟

 使用的服务

实施

    • Python
      1. 在新的浏览器选项卡中,登录 AWS Lambda 控制台。
      2. 确保注意到您创建函数时处于哪个区域。您可以在页面最顶部您的账户名称旁看到此信息。
      3. 单击橙色的“创建函数”按钮。
      4. 在“函数名称”下,键入 HelloWorldFunction
      5. 运行时下拉列表中选择 Python 3.8

      6.单击橙色的“创建函数”按钮。

      7.您应看到屏幕顶部有一个绿色的框,其中显示以下消息“已成功创建函数”。

      8.使用以下代码替换“函数代码”下的代码:

      # 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 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. 确保注意到您创建函数时处于哪个区域。您可以在页面最顶部您的账户名称旁看到此信息。
      3. 单击橙色的“创建函数”按钮。
      4. 在“函数名称”下,键入 HelloWorldFunction
      5. 运行时下拉列表中选择 Node.js 12.x

      6.单击橙色的“创建函数”按钮。

      7.您应看到屏幕顶部有一个绿色的框,其中显示以下消息“已成功创建函数”。

      8.使用以下代码替换“函数代码”下的代码:

      // 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.从该下拉菜单中,点击“配置测试事件”。

      12.在“事件名称”中,键入 HelloWorldTestEvent

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

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

      14.单击页面底部的橙色“创建”按钮。

    • Java
      1. 在新的浏览器选项卡中,登录 AWS Lambda 控制台。
      2. 确保注意到您创建函数时处于哪个区域。您可以在页面最顶部您的账户名称旁看到此信息。
      3. 单击橙色的“创建函数”按钮。
      4. 在“函数名称”下,键入 HelloWorldFunction
      5. 运行时下拉列表中选择 Java 11

      6.单击橙色的“创建函数”按钮。

      7.您应看到屏幕顶部有一个绿色的框,其中显示以下消息“已成功创建函数”。

      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. 单击页面顶部的灰色“测试”按钮。
    2. 您应在页面顶部看到一个浅绿色框,其中显示以下文本:“执行结果:成功”。 您可以单击“详细信息”以查看函数返回的事件。
    3. 做得好! 现在您已经有运行中的 Lambda 函数。

应用程序架构

现在,我们已完成此模块,我们的架构与此类似:

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

此模块有帮助吗?

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