firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用

firehose mode

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第1张图片
https://getstream.io/try-the-api

通过Stream,您可以使用SQS,webhooks或websocket实时收听费用变化。 在本教程中,我们将讨论如何使用AWS SQS和Lambda响应提要更新。

尽管websocket是侦听更改的首选方法,但SQS通知在feed基础结构中占有特殊位置。 由于您可以与收到的结果进行交互,因此Stream确实具有提供实时功能的能力。 例如,您可以侦听提要的更改,并通过例如发给用户的电子邮件进行回复,以诱使他们在购买时拉动触发器,根据您的应用程序中执行的操作发送SMS消息,其中包括数百种其他情况。

这篇文章的目标是使您对AWS SQS,Lambda以及Stream当然有深刻的了解。

注意:为确保您可以从头到尾进行操作,请创建一个帐户或确保您具有使用上述服务的必要权限-我们将不在AWS内部讨论权限。

设置SQS

设置AWS SQS非常简单。 登录后,转到SQS页面。 从那里,我们可以选择创建一个新队列。 点击“立即开始”按钮。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第2张图片

接下来,将为您显示新队列的设置页面。 对于名称,继续并将其设置为“ STREAM”。 然后,选择左侧的选项(“标准队列”)。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第3张图片

创建完成后,我们需要为新创建的STREAM队列指定权限。 对于本教程,我们将向世界开放。

注意:请勿执行此操作—我仅出于示例目的执行此操作。 始终锁定您的服务,仅允许需要访问权限的应用程序和用户进入。
firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第4张图片

单击“添加权限”,您将被设置!

设置流以与SQS一起使用

在开始之前,我们需要为Stream创建一个用户。 我更喜欢创建一个单独的用户,以便可以更改权限。 但是,您可以根据需要随意使用现有的密钥和机密(如果是这种情况,只需跳过本节的第一部分)。

创建一个新的IAM用户和角色

此过程的第一步是转到AWS的IAM部分 。 到那里后,单击“用户”,然后单击“添加用户”。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第5张图片

对于“用户名”,输入“ STREAM”,对于“访问类型”,选择“程序访问”。 单击下一步按钮继续下一步。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第6张图片

在上图中,您会注意到我们选择AmazonSQSFullAccess作为我们的策略名称。 这将确保您创建的用户可以访问SQS。 除了将“ Group name”设置为“ STREAM”以外,您还需要执行相同的操作。

注意:您将需要搜索此策略。 为此,只需在搜索框中输入SQS。
firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第7张图片

创建“ STREAM”角色后,请继续进行审核。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第8张图片

最后,继续创建用户!

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第9张图片

复制“访问密钥ID”和“秘密访问密钥”-下一步将需要它们。

挂钩流

现在,让我们继续将API密钥和密钥放到Stream仪表板中,以便Stream后端知道将出站消息路由到何处。

步骤

  1. 转到流仪表板
  2. 创建名称为“用户”的固定供稿(请确保启用通知)
  3. 点击“用户”提要
  4. 通过单击标记为“活动”的按钮来启用SQS通知
  5. 填写SQS URL,AWS Key和AWS Secret
  6. 点击右上角的保存按钮
firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第10张图片
注意:有关Stream SQS功能的完整说明,您可以在 此处 查看文档

配置Lambda

AWS Lambda let将允许我们运行代码而无需置备或管理服务器。 对于解码作为有效负载发送到SQS的base64编码的字符串,此服务将非常有用。 邮件解码后,您可以执行任何操作-发送短信,电子邮件等。

让我们开始设置Lambda。 首先,您需要转到AWS的Lambda部分(可以通过搜索栏轻松找到)。 如果您是新用户,请阅读2分钟以内的教程。 如果您之前已完成此操作,请立即跳入。

第一步是创建一个新的Lambda函数,如下面的屏幕截图所示。 要复制我的配置,您需要执行以下操作:

  • 选择“从头开始作者”框
  • 将函数命名为“ STREAM”
  • 将Node.js运行时更新为Node.js v8.10(已过时,但它是Lambda上可用的最新版本)
  • 将您的“角色”名称指定为“ STREAM”
  • 包括“ SQS Poller”权限

完成此操作后,单击屏幕右下方的“创建功能”。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第11张图片

可以了,好了! 让我们继续下一步。 如果成功,您应该会看到一个几乎与此相同的屏幕:

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第12张图片

为了允许Lambda函数访问SQS,需要进行一些次要配置。 幸运的是,此步骤只需要单击几下即可。

  1. 在“设计器”部分下,单击可滚动部分中的“ SQS”
  2. 在“配置触发器”部分中,搜索您的SQS队列(在我们的示例中,它将被命名为“ STREAM”)
  3. 批次大小保持为10
  4. 选中“启用触发器”
  5. 最后,点击“添加”
firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第13张图片

发送SQS消息给Lambda

要将SQS连接到Lambda,我们将使用ARN作为Lambda函数。 最简单的方法是转到SQS页面,单击“队列操作”,然后单击“触发Lambda函数”。 这样做将打开一个对话框。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第14张图片

从下拉菜单中选择“ STREAM”,Lambda Function ARN应该会自动填充。 完成后,单击“保存”。 要完全启动并运行该连接,大约需要30秒钟到1分钟 。 您可以在“ Lambda触发器”部分下看到状态,如下面的屏幕快照所示。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第15张图片

测试Lambda功能

现在,我们已经连接了SQS,Lambda和Stream,让我们进行一个端到端测试,以确保将消息传递给Lambda函数。

在Lambda页面上,将函数的内容指定为以下内容:

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第16张图片

然后点击右上角的“保存”按钮。

成功保存Lambda代码后,需要单击“监视”,将您带到另一个页面。 重定向后,单击“在CloudWatch中查看日志”。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第17张图片

返回到您先前在其中配置SQS设置的Stream仪表板。 将有一个标记为“ Test SQS”的方便按钮。 单击该按钮将发送测试有效载荷SQS,那么这应该被转发到拉姆达在那里将被注销到CloudWatch的。 ew!

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第18张图片

您应该在有效负载中看到的是一个tweet活动的示例活动(上面显示的示例)。 如果CloudWatch中未显示任何内容,请尝试重新加载。 如果这不起作用,请再执行一次以上概述的步骤,以确保您已选中每个框。

将有效负载管道传输到AWS SNS

让我们对有效负载示例进行一些处理。 我将建议我们使用AWS SNS将有效负载作为文本消息转发。 要启用SNS,我们需要将AmazonSNSFullAccess添加到STREAM用户。 为此,请返回AWS的IAM部分( 此处 )。 从那里,单击组> STREAM>添加权限>附加策略然后从下拉菜单中选择AmazonSNSFullAccessAWSLambdaFullAccess 。 选择后,单击右下角的“附加策略”。

您的权限现在应如下所示:

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第19张图片

现在,STREAM用户具有SNS的权限,所以让我们继续进行设置。 转到AWS的SNS部分,然后单击“入门”。 下面列出了下一步:

脚步:

  1. 点击“创建主题”
  2. 将“主题名称”和“显示名称”设置为“流”,然后单击“创建主题”
  3. 复制您的“主题ARN”,以备不时之需

接下来,我们需要修改Lambda。 您可能已经注意到,在编辑器中修改Lambda代码是非常困难的-至少它会更大规模。 相反,我建议在计算机上的某个地方创建一个新的Node.js项目,然后安装node-lambda 。 这个很棒的小模块几乎可以毫不费力地设置,空运行,打包并将Lambda部署到AWS。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第20张图片

在本地计算机上创建一个名为“ stream”的目录,然后移至该目录。 进入内部后,运行命令“ node-lambda setup”,node-lambda软件包应为您引导Lambda。 运行安装程序后,最好忽略生成的event.json.env文件以及.lambda。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第21张图片

复制并粘贴以下命令

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第22张图片
注意:对于不熟悉命令行的用户,上面的命令将创建一个新文件(index.js)并安装我们需要的所有节点模块。

按照终端中的提示完成操作。

修改您的package.json文件

打开package.json并将脚本部分更改为此:

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第23张图片

打开.env并修改您的密钥

在您生成的目录内部,应该有一个.env文件,并粘贴您的AWS凭证,角色ARN(您之前已复制过)和填充其余参数以匹配您在AWS中的配置。 我建议您指定以下设置:

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第24张图片

更新您的index.js文件

使用以下代码更新index.js文件:

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第25张图片
注意:作为示例,我们仍在注销Stream发送的内容。

最重要的是,部署您的代码!

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第26张图片

修复SQS连接

当我们这次部署时,假设您按照发球台的指示进行操作,它会创建一个称为“ STREAM-development”的Lambda。 如果您没有将Lambda命名为“ STREAM”,请遵循命名约定。

假设这是一个新的Lambda,我们将需要添加一个新的“触发器”。 这与我们之前在帖子中所做的相同,因此这里没有新内容。 只需单击AWS Lambda页面(对于您的新Lambda)上左侧抽屉中的SQS,然后根据需要指定配置。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第27张图片

将Lambda与SNS主题相关联

还记得我们创建的主题中的ARN吗? 现在是时候使用它了。 打开您的.env文件,然后创建一个名为AWS_SNS_TOPIC_ARN的新环境变量,并将该值设置为您生成的SNS Topic ARN。

创建您的SNS订阅

总结和测试之前,我们需要为您的电话号码生成一个订阅。 可以在AWS仪表板的SNS部分下完成此操作。 要创建订阅,请单击主题 > 选择您现有的主题 ,然后单击“创建订阅”。 将协议指定为SMS,并且端点应为有效的E.164格式的电话号码(例如1–555–555–5555)。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第28张图片

上传最终代码

此SNS设置的倒数第二部分是将一些更新的代码上传到Lambda函数。 只需使用以下代码更新index.js文件,然后使用yarn部署命令将其推送到AWS。

firehose mode_将流实时Firehose与AWS SQS,Lambda和SNS结合使用_第29张图片

全做完了!

恭喜你! 您已经使用Stream,AWS SQS,Lambda和SNS设置了端到端测试,以便在Feed发生事件时发送SMS消息(即使您是按下“ Test SQS”按钮button的用户)

我已经将仓库存储在GitHub上,因此如果遇到问题,请随时克隆它: https : //github.com/nparsons08/stream-sqs-lambda-sns

我也可以回答以下评论中的任何问题。

编码愉快!

翻译自: https://hackernoon.com/using-the-stream-real-time-firehose-with-aws-sqs-lambda-and-sns-25bbefef198a

firehose mode

你可能感兴趣的:(队列,java,python,数据库,linux)