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

13

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

我对AWS Kinesis Stream很感兴趣,并想知道是否可以将用户活动日志直接从他们的浏览器发送到AWS。

AWS提供了一个可在Web浏览器中执行的JavaScript SDK,但根据其文档,SDK需要凭证信息,因此,在我的用例中使用它不安全。

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


1
该软件开发工具包(SDK)提供了与Kinesis的交互功能,这意味着使用它是安全的。唯一需要注意的是正确配置角色和权限。 - VonD
谢谢您的好建议! - k-kawa
1个回答

12

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

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

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

2
API网关对于这种使用情况来说不是非常昂贵吗?想象一下,如果您发送了1,000,000个每个事件重量为1ko的事件:API网关将花费3.5美元,而Kinesis Firehose将花费0.0038美元(欧洲西部定价)。@Guy,我是否错误地计算了成本? - Hugo
你应该考虑其他选择。API-GW提供了许多功能,如果你试图自己管理,可能会花费更多的成本。例如,如果你正在运行一个为其他网站创建分析的服务,你可以使用它进行计费,以及它的边缘位置集成。 - Guy
这是一个使用SDK将事件写入Kinesis的示例,可以在浏览器中使用:https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/kinesis-examples-capturing-page-scrolling.html 但我担心的是SDK的大小:1.5Mb。这将显著增加我的应用程序的大小,所有这些只是为了发送一个简单的HTTP请求。 - Dienow
您可以使用以下说明从 AWS SDK 中删除不需要的部分:https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/building-sdk-for-browsers.html - Guy
@PetrusTheron,我希望你是指使用服务器端的Node应用程序来读取它,而不是从浏览器中读取。您可以使用AWS SDK进行操作:https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/Kinesis.html#getRecords-property - Guy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接