我的第一个问题是,我是否需要 SQS 队列来接收我的远程数据,或者它可以直接进入亚马逊云存储解决方案,如 S3 或 EC2?
目前,我的公司使用第三方供应商来收集和报告我们的远程数据。通过远程数据,我的意思是来自我们在荒野中的机器的数据。这些数据每天几次上传到 Amazon Web Services SQS 队列(由第三方供应商设置),然后第三方供应商从队列中轮询数据,将其删除并保存在他们自己的本地数据库中仅一年。该公司只为我们提供报告服务,因此他们不需要长期存储数据。
展望未来,我们希望拥有数据并将其永久存储在 Amazon Web Services (AWS) 中。然后我们想使用机器学习来监控数据并报告机器的任何潜在问题。
重复我的第一个问题,我们是否需要 SQS 队列来接收这些数据,或者它是否可以直接进入亚马逊云存储解决方案,如 S3 或 EC2?
我的第二个问题是,SQS 队列可以将数据发送到两个不同的地方吗?也就是说,队列能否将数据发送给第三方供应商,以及 Amazon Web Services 数据库?
我是一名分析师/数据科学家,所以我知道如何在数据库中使用数据。我只是不知道将其放入数据库的最佳方法。
不需要 SQS。SQS 是一项公开可用的服务,只需要在请求标头中包含身份验证令牌。您可以使用具有安全密钥的 IAM 用户账户授予该权限,或者如果调用服务是另一个 AWS 账户,您可以通过 IAM 角色授予访问权限。S3 也是一种公共服务,在访问方面与 SQS 类似。设置跨 AWS 账户访问的过程略有不同,但概念是相同的。您还可以通过在公共子网中为其分配公共 IP 地址或使用弹性负载均衡器 (ELB) 将数据直接发送到 EC2 实例。
SQS 是一种队列服务,它只保留数据以供其他服务下拉。但是,如果您希望有一项服务将数据集广播到多个目的地,那么您正在寻找 SNS。SNS 将允许您发送到多个目的地,每个目的地都可以有自己的交付类型。例如,如果您向 SNS 发布消息,您可以让它将该消息传递给 AWS 中的 lambda 函数和接受 JSON 的 Web 端点。
唯一需要注意的是,SNS 会将收到的消息直接发送到目的地,而无需进行任何转换,因此每个目的地都将收到完全相同的消息并负责提取数据。