使用Amazon API Gateway

可以在 HTTPS 网址上调用AWS Lambda函数.它可以在GET,POST,PUT上完成.调用HTTPS URL时,也可以触发AWS Lambda函数,并且可以在AWS Lambda中使用 get/post 传递给HTTPS的数据,以用于在DynamoDB中插入或发送邮件等.

本章详细讨论了使用AWS lambda和API Gateway工作所涉及的各种流程.

涉及的流程

以下是使用AWS lambda和API Gateway&minus所涉及的过程;

  • 为权限创建IAM角色

  • 创建AWS lambda函数

  • 创建API网关

  • 将lambda函数链接到api网关

  • 将数据传递到api网关

这里给出了一个解释API网关和AWS Lambda工作的基本图表 :

涉及的进程

这些进程在本文中进一步详细说明带有相关屏幕截图的pter.

为权限创建IAM角色

如下所示,从Amazon服务中选择IAM以创建Lambda函数使用的角色.

创建Iam

转到IAM并选择角色从左侧部分如下所示 :

仪表板菜单

为Lambda函数点击创建角色.

其他资源

选择Lambda并点击底部的权限.选择API网关和Lambda所需的权限.

选择类型

在搜索中搜索API网关,它将列出所有相关权限.在这里,我们选择了对API网关的完全访问权限,如下所示 :

Attach Permission

现在,搜索API网关,它将列出所有相关权限.在这里,我们选择了对API网关的完全访问权限,如下所示 :

Api Gateway

您还必须为政策重复相同的流程.

Policies

选择必要的策略后,单击查看进行下一步.根据您的选择输入角色的名称,如下所示 :

Review

显示附加到角色的策略.单击创建角色,我们完成了角色创建,可以继续使用lambda函数.

创建AWS Lambda函数

转到AWS服务并单击lambda服务以创建一个用于将其与api网关连接的函数.

计算

Lambda函数的UI屏幕如下所示.单击创建功能按钮继续创建Lambda函数.

UI Screen

输入函数的名称并选择我们上面创建的现有角色.

输入名称

它会闪烁一条消息,表明已成功创建名为 lambdawithapigateway 的函数.

Lambda Gateway

请注意,这里我们将使用 nodejs 运行时来编写代码.带有 helloworld 消息的AWS代码如下所示 :

Environment

AWS Lambda代码存在于 index.js 文件中.名为handler的函数有params,即事件,context 回调.

回调函数基本上有错误和成功消息.请注意,这里我们没有任何与错误相关的代码,因此传递null并且成功消息是来自lambda的HelloWorld.

最后,保存添加的更改和让我们继续将Lambda函数添加到API网关.

创建API网关

登录到您的AWS账户并打开API Gateway,如下所示 :

Content Delivery

单击API网关,它将引导您到可以创建新API网关的屏幕.

亚马逊网关

点击创建API 并添加详细信息,如下所示 :

Create New

单击屏幕右侧的创建API 按钮.这将在屏幕左侧显示新创建的API.

Create New Api

单击操作下拉列表为API创建新资源.

操作下拉菜单

现在,创建一个新资源,如下所示 :

资源组

输入资源名称,如下所示.您将在最后创建的URL中看到输入的资源的名称.点击创建资源,您将在屏幕上看到如下 :

子资源


资源服务

GET/POST 方法添加到创建的资源中,如下所示.从操作下拉列表中选择方法.

获取方法

单击 GET 方法将方法添加到API.

Api方法

下一步是将它与Lambda函数集成的集成.现在添加Lambda函数,如下所示 :

获取设置

将Lambda函数链接到API网关

选择之前创建的lambda函数.

你好设置

保存更改,你可以看到一个请求权限的对话框,如下所示 :

添加权限

单击确定获取权限.这是API网关HTTP请求和Lambda函数之间的执行细节 :

方法执行

现在,让我们部署API网关更改.为此,我们需要从操作下拉列表中选择部署API ,如下所示 :

Deploy Api

选择部署API .它将要求部署状态.从部署阶段下拉列表中选择新阶段,并将阶段名称添加为生产.

选择部署

单击部署按钮,它会将您重定向到网址,如下所示 :

Click Deploy

从左侧选择 GET 方法获取网址.在新标签页中打开网址,查看来自Lambda函数的邮件.

选择获取

这是使用AWS Lambda和AWS API Gateway的基本示例.在上面的示例中,我们在Lambda函数中对消息进行了硬编码.

现在,让我们从API网关获取消息详细信息.如果必须从不同的域调用HTTPS调用,例如AJAX调用API,我们需要为创建的API网关启用CORS.

选择为其创建的reSource API并点击操作下拉列表&减号;

Hello方法

现在,启用CORS 将打开以下屏幕 :

启用Cors

您可以使用几种方法来启用CORS. Access-Control-Allow-Origin 标记为*,这意味着它将允许从任何域的API网关获取内容.

您还可以指定域您希望使用API的名称.单击启用CORS并替换现有的CORS标题按钮,它将显示确认消息,如下所示 :

符合方法

单击是,替换现有值按钮启用它. 启用CORS 屏幕如下所示 :

替换现有值

将数据传递到API网关

打开在API网关 displayhelloworld 中创建的API,如下所示 :

传递数据

点击积分请求发送数据,如下图所示 :

整合请求

选择正文映射模板并将此示例中的 Content-Type 添加为 application/json .点击添加的内容类型添加详细信息如下 :

Body Mapping

现在,以JSON格式添加模板,如下所示 :

Json

观察我们已将消息作为参数从API Gateway获取数据并与AWS Lambda共享.获取详细信息的语法如上所示.

现在,部署API以在API网关URL上进行更改.为此,我们需要更改Lambda函数以基于API网关URL显示数据. Lambda函数的代码如下所示.请注意,我们正在从事件中传递消息并传递给回调.

 
 exports.handler =(event,context,callback)=> {
 let message = event.message; 
回调(null,message); 
};

现在,保存Lambda中的更改并点击URL以查看更改.观察下面给出的屏幕截图 :

观察屏幕截图

点击URL如下所示 :

 
 https://rw2ek1xung.execute-api.us-east- 
 1.amazonaws.com/prod/hello?message = hello%20from%20api%20gateway

注意这里我们将消息作为查询字符串传递给GET url.然后您可以观察输出,如下所示 :

传递消息

它会从URL中读取发送到消息的详细信息,并在浏览器中显示相同内容.