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

将流实时Firehose与AWS SQS,Lambda和SNS结合使用
https://getstream.io/try-the-api

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

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

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

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

设置SQS

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

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

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

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

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

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

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

设置流以与SQS一起使用

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

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

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

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

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

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

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

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

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

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

最后,继续创建用户!

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

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

挂钩流

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

步骤

  1. 转到流仪表板
  2. 创建名称为“用户”的固定供稿(请确保启用通知)
  3. 点击“用户”提要
  4. 通过单击标记为“活动”的按钮来启用SQS通知
  5. 填写SQS URL,AWS Key和AWS Secret
  6. 点击右上角的保存按钮
将流实时Firehose与AWS SQS,Lambda和SNS结合使用
注意:有关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与AWS SQS,Lambda和SNS结合使用

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

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

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

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

发送SQS消息给Lambda

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

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

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

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

测试Lambda功能????

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

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

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

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

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

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

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

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

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

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

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

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

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

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

脚步:

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

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

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

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

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

复制并粘贴以下命令

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

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

修改您的package.json文件

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

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

打开.env并修改您的**

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

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

更新您的index.js文件

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

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

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

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

修复SQS连接

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

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

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

将Lambda与SNS主题相关联

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

创建您的SNS订阅

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

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

上传最终代码

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

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

全做完了!

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

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

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

编码愉快! ????

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