可以在 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.
如下所示,从Amazon服务中选择IAM以创建Lambda函数使用的角色.
转到IAM并选择角色从左侧部分如下所示 :
为Lambda函数点击创建角色.
选择Lambda并点击底部的权限.选择API网关和Lambda所需的权限.
在搜索中搜索API网关,它将列出所有相关权限.在这里,我们选择了对API网关的完全访问权限,如下所示 :
现在,搜索API网关,它将列出所有相关权限.在这里,我们选择了对API网关的完全访问权限,如下所示 :
您还必须为政策重复相同的流程.
选择必要的策略后,单击查看进行下一步.根据您的选择输入角色的名称,如下所示 :
显示附加到角色的策略.单击创建角色,我们完成了角色创建,可以继续使用lambda函数.
转到AWS服务并单击lambda服务以创建一个用于将其与api网关连接的函数.
Lambda函数的UI屏幕如下所示.单击创建功能按钮继续创建Lambda函数.
输入函数的名称并选择我们上面创建的现有角色.
它会闪烁一条消息,表明已成功创建名为 lambdawithapigateway 的函数.
请注意,这里我们将使用 nodejs 运行时来编写代码.带有 helloworld 消息的AWS代码如下所示 :
AWS Lambda代码存在于 index.js 文件中.名为handler的函数有params,即事件,context 和回调.
回调函数基本上有错误和成功消息.请注意,这里我们没有任何与错误相关的代码,因此传递null并且成功消息是来自lambda的HelloWorld.
最后,保存添加的更改和让我们继续将Lambda函数添加到API网关.
登录到您的AWS账户并打开API Gateway,如下所示 :
单击API网关,它将引导您到可以创建新API网关的屏幕.
点击创建API 并添加详细信息,如下所示 :
单击屏幕右侧的创建API 按钮.这将在屏幕左侧显示新创建的API.
单击操作下拉列表为API创建新资源.
现在,创建一个新资源,如下所示 :
输入资源名称,如下所示.您将在最后创建的URL中看到输入的资源的名称.点击创建资源,您将在屏幕上看到如下 :
将 GET/POST 方法添加到创建的资源中,如下所示.从操作下拉列表中选择方法.
单击 GET 方法将方法添加到API.
下一步是将它与Lambda函数集成的集成.现在添加Lambda函数,如下所示 :
选择之前创建的lambda函数.
保存更改,你可以看到一个请求权限的对话框,如下所示 :
单击确定获取权限.这是API网关HTTP请求和Lambda函数之间的执行细节 :
现在,让我们部署API网关更改.为此,我们需要从操作下拉列表中选择部署API ,如下所示 :
选择部署API .它将要求部署状态.从部署阶段下拉列表中选择新阶段,并将阶段名称添加为生产.
单击部署按钮,它会将您重定向到网址,如下所示 :
从左侧选择 GET 方法获取网址.在新标签页中打开网址,查看来自Lambda函数的邮件.
这是使用AWS Lambda和AWS API Gateway的基本示例.在上面的示例中,我们在Lambda函数中对消息进行了硬编码.
现在,让我们从API网关获取消息详细信息.如果必须从不同的域调用HTTPS调用,例如AJAX调用API,我们需要为创建的API网关启用CORS.
选择为其创建的reSource API并点击操作下拉列表&减号;
现在,启用CORS 将打开以下屏幕 :
您可以使用几种方法来启用CORS. Access-Control-Allow-Origin 标记为*,这意味着它将允许从任何域的API网关获取内容.
您还可以指定域您希望使用API的名称.单击启用CORS并替换现有的CORS标题按钮,它将显示确认消息,如下所示 :
单击是,替换现有值按钮启用它. 启用CORS 屏幕如下所示 :
打开在API网关 displayhelloworld 中创建的API,如下所示 :
点击积分请求发送数据,如下图所示 :
选择正文映射模板并将此示例中的 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; 回调(null,message); };
现在,保存Lambda中的更改并点击URL以查看更改.观察下面给出的屏幕截图 :
点击URL如下所示 :
https://rw2ek1xung.execute-api.us-east- 1.amazonaws.com/prod/hello?message = hello%20from%20api%20gateway
注意这里我们将消息作为查询字符串传递给GET url.然后您可以观察输出,如下所示 :
它会从URL中读取发送到消息的详细信息,并在浏览器中显示相同内容.