- AWS Lambda 教程
- AWS Lambda - 主页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 中的函数
- Java 中的函数
- Python 中的函数
- Go 中的函数
- C# 中的函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用无服务器框架创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- 使用 Amazon S3 的 Lambda 函数
- 使用 Amazon DynamoDB 的 Lambda 函数
- 具有预定事件的 Lambda 函数
- 带有 Amazon SNS 的 Lambda 函数
- 带有 CloudTrail 的 Lambda 函数
- 使用 Amazon Kinesis 的 Lambda 函数
- 具有自定义用户应用程序的 Lambda 函数
- AWS Lambda@Edge 与 CloudFront
- 使用 Cloudwatch 进行监控和故障排除
- AWS Lambda - 其他示例
- AWS Lambda 有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用的资源
- AWS Lambda - 讨论
使用 Amazon API Gateway
可以在HTTPS url上调用 AWS Lambda 函数。可以通过 GET、POST、PUT 来完成。当调用 HTTPS url 时,也可以触发 AWS Lambda 函数,并且可以在 AWS Lambda 内部使用get/post传递到 HTTPS 的数据,以用于插入 DynamoDB 或发送邮件等。
本章详细讨论了使用 AWS lambda 和 API Gateway 所涉及的各种流程。
涉及的流程
以下是使用 AWS lambda 和 API Gateway 所涉及的流程 -
- 创建 IAM 角色以获得权限
- 创建AWS lambda函数
- 创建API网关
- 将 lambda 函数链接到 api 网关
- 将数据传递到api网关
这里给出了解释 API 网关和 AWS Lambda 工作原理的基本图 -
本章将通过相关屏幕截图进一步详细解释这些过程。
创建 IAM 角色以获得权限
从如下所示的 Amazon 服务中,选择 IAM 用于创建 Lambda 函数使用的角色。
转到 IAM 并从左侧部分选择角色,如下所示 -
单击为 Lambda 函数创建角色。
选择 Lambda 并单击底部的权限。选择API网关和Lambda所需的权限。
在搜索中搜索API网关,它会列出所有相关权限。这里我们选择了对 API 网关的完全访问,如下所示 -
现在,搜索API网关,它会列出所有相关权限。这里我们选择了对 API 网关的完全访问,如下所示 -
您还必须对策略重复相同的过程。
选择完必要的策略后,单击“审核”进行下一步。根据您的选择输入角色名称,如下所示 -
它显示附加到角色的策略。单击创建角色,我们就完成了角色创建,可以继续使用 lambda 函数。
创建 AWS Lambda 函数
转到 AWS 服务并单击 lambda 服务以创建用于将其与 api 网关连接的函数。
Lambda 函数的 UI 屏幕如下所示。单击创建函数按钮继续创建 Lambda 函数。
输入函数的名称并选择我们上面创建的现有角色。
它会闪烁一条消息,表明名称为lambdawithapigateway 的函数已成功创建。
注意,这里我们将使用nodejs运行时来编写代码。带有helloworld消息的 AWS 代码如下所示 -
AWS Lambda 代码位于index.js文件中。称为 handler 的函数具有参数,即events、context和callback。
回调函数主要有错误和成功消息。请注意,这里我们没有任何与错误相关的代码,因此传递了 null,成功消息是来自 lambda 的 HelloWorld。
最后,保存添加的更改,然后让我们继续将 Lambda 函数添加到 API 网关。
创建API网关
登录您的 AWS 帐户并打开 API Gateway,如下所示 -
单击API网关,它将引导您进入可以创建新API网关的屏幕。
单击创建 API并添加详细信息,如下所示 -
单击屏幕右侧的“创建 API”按钮。这将在屏幕左侧显示新创建的 API。
单击操作下拉列表可为 API 创建新资源。
现在,创建一个新资源,如下所示 -
输入资源名称,如下所示。您将看到最后创建的 url 中输入的资源名称。单击创建资源,您将在屏幕上看到它,如下所示 -
将GET/POST方法添加到创建的资源中,如下所示。从“操作”下拉列表中选择方法。
单击GET方法将该方法添加到 API。
下一步是集成,将其与 Lambda 函数集成。现在向其中添加 Lambda 函数,如下所示 -
将 Lambda 函数链接到 API 网关
选择之前创建的 lambda 函数。
保存更改,您可以看到一个请求许可的对话框,如下所示 -
单击“确定”获得权限。这是 API 网关 HTTP 请求和 Lambda 函数之间的执行详细信息 -
现在,让我们部署 API 网关更改。为此,我们需要从操作下拉列表中选择部署 API,如下所示 -
选择部署 API。它将询问部署状态。从 Deployment stage 下拉列表中选择New Stage并将阶段名称添加为Production。
单击“部署”按钮,它会将您重定向到如下所示的 url -
从左侧选择GET方法来获取 url。在新选项卡中打开 URL 以查看来自 Lambda 函数的消息。
这是使用 AWS Lambda 和 AWS API Gateway 的基本示例。在上面的示例中,我们在 Lambda 函数中对消息进行了硬编码。
现在,让我们从 API 网关获取消息详细信息。如果必须从不同的域调用 HTTPS 调用,例如对 API 的 AJAX 调用,我们需要为创建的 API 网关启用 CORS。
选择为 API 创建的资源,然后单击“操作”下拉列表 -
现在,启用 CORS将打开以下屏幕 -
您可以使用几种方法来启用 CORS。Access-Control-Allow-Origin标记为 *,这意味着它将允许从任何域的 API 网关获取内容。
您还可以指定要与 API 配合使用的域名。单击启用 CORS 并替换现有 CORS 标头按钮,它将显示确认消息,如下所示 -
单击是,替换现有值按钮以启用它。启用CORS屏幕如下所示 -
将数据传递到 API 网关
打开在API网关displayhelloworld中创建的API,如下所示 -
单击集成请求发送数据,如下所示 -
选择Body Mapping Templates并将本示例的Content-Type添加为application/json。单击添加的内容类型添加详细信息,如下所示 -
现在,添加 JSON 格式的模板,如下所示 -
请注意,我们已将消息作为参数从 API Gateway 获取数据并与 AWS Lambda 共享。获取详细信息的语法如上所示。
现在,部署 API 以使更改在 API 网关 URL 上可用。为此,我们需要更改 Lambda 函数以根据 API 网关 URL 显示数据。Lambda 函数的代码如下。请注意,我们从事件中获取消息并传递给回调。
exports.handler = (event, context, callback) => { let message = event.message; callback(null, message); };
现在,将更改保存在 Lambda 中并点击 URL 以查看更改。观察下面给出的屏幕截图 -
单击如下所示的 URL -
https://rw2ek1xung.execute-api.us-east- 1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway
请注意,这里我们将消息作为查询字符串传递到 GET url。然后您可以观察输出,如下所示 -
它从 URL 读取发送到消息的详细信息,并将其显示在浏览器中。