将流实时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页面。 从那里,我们可以选择创建一个新队列。 点击“立即开始”按钮。

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

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

注意:请勿执行此操作—我仅出于示例目的执行此操作。 始终保持您的服务处于锁定状态,仅允许需要访问权限的应用程序和用户进入。 😜

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

设置流以与SQS一起使用

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

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

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

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

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

注意:您将需要搜索此策略。 为此,只需在搜索框中输入SQS。

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

最后,继续创建用户!

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

挂钩流

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

步骤

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

配置Lambda

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

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

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

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

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

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

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

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

发送SQS消息给Lambda

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

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

测试Lambda功能🐑

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

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

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

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

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

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

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

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

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

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

脚步:

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

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

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

复制并粘贴以下命令

注意:对于不熟悉命令行的用户,上面的命令将创建一个新文件(index.js)并安装我们需要的所有节点模块。

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

修改您的package.json文件

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

打开.env并修改您的密钥

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

更新您的index.js文件

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

注意:作为示例,我们仍在注销Stream发送的内容。

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

修复SQS连接

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

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

将Lambda与SNS主题相关联

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

创建您的SNS订阅

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

上传最终代码

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

全做完了!

恭喜你! 您已经使用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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值