firehose mode
https://getstream.io/try-the-api通过Stream,您可以使用SQS,webhooks或websocket实时收听费用变化。 在本教程中,我们将讨论如何使用AWS SQS和Lambda响应提要更新。
尽管websocket是侦听更改的首选方法,但SQS通知在feed基础结构中占有特殊位置。 由于您可以与收到的结果进行交互,因此Stream确实具有提供实时功能的能力。 例如,您可以侦听提要的更改,并通过例如发给用户的电子邮件进行回复,以诱使他们在购买时拉动触发器,根据您的应用程序中执行的操作发送SMS消息,其中包括数百种其他情况。
这篇文章的目标是使您对AWS SQS,Lambda以及Stream当然有深刻的了解。
注意:为确保您可以从头到尾进行操作,请创建一个帐户或确保您具有使用上述服务的必要权限-我们将不在AWS内部讨论权限。
设置AWS SQS非常简单。 登录后,转到SQS页面。 从那里,我们可以选择创建一个新队列。 点击“立即开始”按钮。
接下来,将为您显示新队列的设置页面。 对于名称,继续并将其设置为“ STREAM”。 然后,选择左侧的选项(“标准队列”)。
创建完成后,我们需要为新创建的STREAM队列指定权限。 对于本教程,我们将向世界开放。
注意:请勿执行此操作—我仅出于示例目的执行此操作。 始终锁定您的服务,仅允许需要访问权限的应用程序和用户进入。
单击“添加权限”,您将被设置!
在开始之前,我们需要为Stream创建一个用户。 我更喜欢创建一个单独的用户,以便可以更改权限。 但是,您可以根据需要随意使用现有的密钥和机密(如果是这种情况,只需跳过本节的第一部分)。
此过程的第一步是转到AWS的IAM部分 。 到那里后,单击“用户”,然后单击“添加用户”。
对于“用户名”,输入“ STREAM”,对于“访问类型”,选择“程序访问”。 单击下一步按钮继续下一步。
在上图中,您会注意到我们选择AmazonSQSFullAccess作为我们的策略名称。 这将确保您创建的用户可以访问SQS。 除了将“ Group name”设置为“ STREAM”以外,您还需要执行相同的操作。
注意:您将需要搜索此策略。 为此,只需在搜索框中输入SQS。
创建“ STREAM”角色后,请继续进行审核。
最后,继续创建用户!
复制“访问密钥ID”和“秘密访问密钥”-下一步将需要它们。
现在,让我们继续将API密钥和密钥放到Stream仪表板中,以便Stream后端知道将出站消息路由到何处。
步骤 :
注意:有关Stream SQS功能的完整说明,您可以在 此处 查看文档 。
AWS Lambda let将允许我们运行代码而无需置备或管理服务器。 对于解码作为有效负载发送到SQS的base64编码的字符串,此服务将非常有用。 邮件解码后,您可以执行任何操作-发送短信,电子邮件等。
让我们开始设置Lambda。 首先,您需要转到AWS的Lambda部分(可以通过搜索栏轻松找到)。 如果您是新用户,请阅读2分钟以内的教程。 如果您之前已完成此操作,请立即跳入。
第一步是创建一个新的Lambda函数,如下面的屏幕截图所示。 要复制我的配置,您需要执行以下操作:
完成此操作后,单击屏幕右下方的“创建功能”。
可以了,好了! 让我们继续下一步。 如果成功,您应该会看到一个几乎与此相同的屏幕:
为了允许Lambda函数访问SQS,需要进行一些次要配置。 幸运的是,此步骤只需要单击几下即可。
要将SQS连接到Lambda,我们将使用ARN作为Lambda函数。 最简单的方法是转到SQS页面,单击“队列操作”,然后单击“触发Lambda函数”。 这样做将打开一个对话框。
从下拉菜单中选择“ STREAM”,Lambda Function ARN应该会自动填充。 完成后,单击“保存”。 要完全启动并运行该连接,大约需要30秒钟到1分钟 。 您可以在“ Lambda触发器”部分下看到状态,如下面的屏幕快照所示。
现在,我们已经连接了SQS,Lambda和Stream,让我们进行一个端到端测试,以确保将消息传递给Lambda函数。
在Lambda页面上,将函数的内容指定为以下内容:
然后点击右上角的“保存”按钮。
成功保存Lambda代码后,需要单击“监视”,将您带到另一个页面。 重定向后,单击“在CloudWatch中查看日志”。
返回到您先前在其中配置SQS设置的Stream仪表板。 将有一个标记为“ Test SQS”的方便按钮。 单击该按钮将发送测试有效载荷SQS,那么这应该被转发到拉姆达在那里将被注销到CloudWatch的。 ew!
您应该在有效负载中看到的是一个tweet活动的示例活动(上面显示的示例)。 如果CloudWatch中未显示任何内容,请尝试重新加载。 如果这不起作用,请再执行一次以上概述的步骤,以确保您已选中每个框。
让我们对有效负载示例进行一些处理。 我将建议我们使用AWS SNS将有效负载作为文本消息转发。 要启用SNS,我们需要将AmazonSNSFullAccess添加到STREAM用户。 为此,请返回AWS的IAM部分( 此处 )。 从那里,单击组> STREAM>添加权限>附加策略 , 然后从下拉菜单中选择AmazonSNSFullAccess和AWSLambdaFullAccess 。 选择后,单击右下角的“附加策略”。
您的权限现在应如下所示:
现在,STREAM用户具有SNS的权限,所以让我们继续进行设置。 转到AWS的SNS部分,然后单击“入门”。 下面列出了下一步:
脚步:
接下来,我们需要修改Lambda。 您可能已经注意到,在编辑器中修改Lambda代码是非常困难的-至少它会更大规模。 相反,我建议在计算机上的某个地方创建一个新的Node.js项目,然后安装node-lambda 。 这个很棒的小模块几乎可以毫不费力地设置,空运行,打包并将Lambda部署到AWS。
在本地计算机上创建一个名为“ stream”的目录,然后移至该目录。 进入内部后,运行命令“ node-lambda setup”,node-lambda软件包应为您引导Lambda。 运行安装程序后,最好忽略生成的event.json和.env文件以及.lambda。
注意:对于不熟悉命令行的用户,上面的命令将创建一个新文件(index.js)并安装我们需要的所有节点模块。
按照终端中的提示完成操作。
打开package.json并将脚本部分更改为此:
在您生成的目录内部,应该有一个.env文件,并粘贴您的AWS凭证,角色ARN(您之前已复制过)和填充其余参数以匹配您在AWS中的配置。 我建议您指定以下设置:
使用以下代码更新index.js文件:
注意:作为示例,我们仍在注销Stream发送的内容。
最重要的是,部署您的代码!
当我们这次部署时,假设您按照发球台的指示进行操作,它会创建一个称为“ STREAM-development”的Lambda。 如果您没有将Lambda命名为“ STREAM”,请遵循命名约定。
假设这是一个新的Lambda,我们将需要添加一个新的“触发器”。 这与我们之前在帖子中所做的相同,因此这里没有新内容。 只需单击AWS Lambda页面(对于您的新Lambda)上左侧抽屉中的SQS,然后根据需要指定配置。
还记得我们创建的主题中的ARN吗? 现在是时候使用它了。 打开您的.env文件,然后创建一个名为AWS_SNS_TOPIC_ARN的新环境变量,并将该值设置为您生成的SNS Topic ARN。
总结和测试之前,我们需要为您的电话号码生成一个订阅。 可以在AWS仪表板的SNS部分下完成此操作。 要创建订阅,请单击主题 > 选择您现有的主题 ,然后单击“创建订阅”。 将协议指定为SMS,并且端点应为有效的E.164格式的电话号码(例如1–555–555–5555)。
此SNS设置的倒数第二部分是将一些更新的代码上传到Lambda函数。 只需使用以下代码更新index.js文件,然后使用yarn部署命令将其推送到AWS。
恭喜你! 您已经使用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