我们如何在 Web 浏览器中使用 AWS Kinesis?

Posted

技术标签:

【中文标题】我们如何在 Web 浏览器中使用 AWS Kinesis?【英文标题】:How can we use AWS Kinesis in a web browser? 【发布时间】:2016-08-04 01:42:59 【问题描述】:

我对@9​​87654321@ 很感兴趣,想知道是否可以使用它将用户的活动日志直接从浏览器发送到 AWS。

AWS 提供了a javascript SDK,它可以在网络浏览器中执行,但根据其文档,SDK 需要凭据信息,因此我认为在我的用例中使用它并不安全。

我应该在他们的浏览器和 AWS Kinesis 之间放置代理服务器吗? 或者在这种情况下是否有任何安全的方法可以使用 AWS Kinesis?

【问题讨论】:

SDK 提供了与 kinesis 配合使用的钩子,这意味着它可以安全使用。唯一要做的就是正确配置角色和权限。 感谢您的好建议! 【参考方案1】:

您有几个选项可以直接从用户的浏览器使用 JS SDK,而无需在代码中嵌入凭据或强制用户登录服务:

第一个是使用AWSCognito。您可以在 JS 代码中嵌入几行代码,以识别您要使用的身份池。在服务端,您为未经身份验证的用户定义角色,以便能够写入 Kinesis。您可以在此博客文章中查看更多详细信息:https://blogs.aws.amazon.com/javascript/post/Tx1F7FO6GDAIXD3/Authentication-with-Amazon-Cognito-in-the-Browser

第二个选项是将API-Gateway 放在您的用户和 Kinesis 流之间。网关是一项托管服务,您可以将其定义为“开放”且无需身份验证,并且网关可以是有权写入 Kinesis 流的服务。最简单的方法是使用 Lambda 函数,该函数还能够在将事件放入流之前转换/清理事件。在服务文档中查看更多详细信息:http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started.html

【讨论】:

对于这样的用例,API 网关不是非常昂贵吗?假设您发送 1 000 000 个事件,每个事件的权重为 1 ko:API Gateway 将花费 3.5 美元,Kinesis Firehose 将花费 0.0038 美元(欧盟西部关税)。 @Guy 我是不是计算错了成本? 您应该考虑替代方案。 API-GW 提供了很多功能,如果您尝试自己管理,可能会花费更多。例如,如果您运行的服务正在创建对其他站点的分析以及其边缘位置集成,则可以将其用于计费。 这里是 browsr 中使用 SDK 将事件写入 kinesis docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/… 的示例,但我担心的是 DSK 的大小:1.5Mb。它会显着增加我的应用程序的大小,所有这些只是为了发送一个简单的 http 请求 您可以使用以下说明删除 AWS 开发工具包中不需要的部分:docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/… @PetrusTheron,我希望您的意思是使用服务器端节点应用程序而不是从浏览器读取它。您可以为此使用 AWS 开发工具包:docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/…

以上是关于我们如何在 Web 浏览器中使用 AWS Kinesis?的主要内容,如果未能解决你的问题,请参考以下文章

AWS 如何从私有子网中的 EC2 实例打开网站

如何在 AWS 中创建环境变量(空格)?

在 AWS 区域中寻找最佳部署位置

使用 AWS SNS 的浏览器通知 [关闭]

使用 aws api 网关的 Wallet Pass 自动更新 Web 服务

如何使用 ReactJS/NodeJS 一起部署到 Amazon Web Services (AWS)?