构建一个基本的 Web 应用程序
教程
模块 2:构建无服务器函数
在此模块中,我们将使用 AWS Lambda 构建无服务器函数
概览
在此模块中,您将在 Python、JavaScript 或 Java 中编写一小段代码,以在后面的模块中用于将交互添加到网页中。您将使用 AWS Lambda,这是一项计算服务,让您能够创建无服务器函数的计算服务,无需管理软件和硬件。反之,应用程序将分为各个函数,可以分别调用和扩展。
这些无服务器函数基于您将在代码中定义的特定事件触发。它还是一个非常经济实惠的服务,因为您只需为处理的事件数量付费,而无需为闲置时间付费。最重要的是,您必须再担心管理任何服务器。
您将学到的内容
在本模块中,您将:
- 使用 AWS 管理控制台(用 Python、JavaScript 或 Java)从头开始创建 Lambda 函数
- 在 AWS 管理控制台中创建(JSON)事件以测试函数
重要概念
计算服务:提供计算处理能力的服务。
无服务器函数:将由计算服务按需执行的代码段。
Lambda 触发器:将进行 Lambda(无服务器)函数运行的事件类型。它可以是另一个 AWS 服务或外部输入。
实施
-
创建您的 Lambda 函数并进行配置
-
Python
-
JavaScript
-
Java
-
Python
-
- 在新的浏览器选项卡中,登录 AWS Lambda 控制台。
- 请确保创建函数的区域与在上一模块中创建 Web 应用程序的区域相同。您可以在页面最顶部您的账户名称旁看到此信息。
- 选择橙色的创建函数按钮。
- 在函数名称下,输入 HelloWorldFunction。
- 从运行时系统下拉列表中选择 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
-
- 在新的浏览器选项卡中,登录 AWS Lambda 控制台。
- 请确保创建函数的区域与在上一模块中创建 Web 应用程序的区域相同。您可以在页面最顶部您的账户名称旁看到此信息。
- 选择橙色的创建函数按钮。
- 在函数名称下,输入 HelloWorldFunction。
- 从运行时系统下拉列表中选择 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
-
- 在新的浏览器选项卡中,登录 AWS Lambda 控制台。
- 请确保创建函数的区域与在上一模块中创建 Web 应用程序的区域相同。您可以在页面最顶部您的账户名称旁看到此信息。
- 选择橙色的创建函数按钮。
- 在函数名称下,输入 HelloWorldFunction。
- 从运行时系统下拉列表中选择 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.单击页面底部的橙色创建按钮。
-
-
测试 Lambda 函数
- 在页面顶部的 HelloWorldFunction 部分下,选择测试选项卡。
- 您应在页面顶部看到一个浅绿色框,其中显示以下文本:执行结果:成功。 您可以选择详细信息以查看函数返回的事件。
- 做得好! 现在您已经有运行中的 Lambda 函数。
- 在页面顶部的 HelloWorldFunction 部分下,选择测试选项卡。
应用程序架构
现在,我们已完成此模块,架构如下所示:
您将注意到,我们在图表中添加了 AWS Lambda 服务,但它还没有与 AWS Amplify 或我们的用户连接。我们将在下一个模块中建立此链接。