0

希望构建一个记录数据会话的移动应用程序。需要对数据进行清理,然后将其上传到传入的 S3 存储桶中。此存储桶上有一个事件,然后触发 Lambda 函数来处理数据,然后将其放入传出 S3 存储桶中。这是文件的形式,文件内容是处理结果的单词。然后需要将该结果返回给设备。我希望使用尽可能多的 AWS 服务来构建它。用户(设备)还需要有可用的历史数据,才能查看他们以前的结果。目前,我有以下想法:

  • AWS Cognito 对设备进行身份验证
  • 移动设备将处理和清理数据,并再次使用 Cognito 身份验证,将有效负载数据包放入 S3 传入存储桶,DeviceID 构成文件名的一部分
  • 进程保持不变,使用 Lamdba 函数,输出为文本文件,再次使用 DeviceID 命名约定
  • 传出 S3 存储桶上的事件触发器,使用另一个 Lambda 函数将结果存储到 DynamoDB。存储后,向设备发送带有最新结果(状态)的推送通知
  • 一个带有自定义 Node.js 管理应用程序的小型 EC2 实例,用于搜索 DynamoDB 并查看所有结果,并可能在发送给用户之前拦截结果(如工作流)。甚至可以从管理控制台向用户触发最终通知
  • 设备应用程序将使用 AWS SDK 读取 DynamoDB 历史结果
  • 未来可能会结合 Elastic MapReduce 对结果执行复杂查询

解决方案似乎相当合理,我仍在了解所有可用的 AWS 服务,所以不确定我是否遗漏了任何明显的东西。

4

2 回答 2

1

我建议结合使用AWS API GatewayAmazon Lambda而不是部署独立实例。

我还建议使用SNS移动推送通知,因为这与您的架构的其余部分非常一致。

于 2015-07-15T16:00:16.057 回答
0

除非您尝试将输入处理与摄取分离,否则 S3 似乎并没有为此流程增加太多价值。您可以直接从您的移动应用程序调用 Amazon Lambda,并将结果直接从 lambda 写入 ddb。

如果您确实使用 S3,我建议您使用 cognito id 作为设备 ID 上的密钥的一部分。这样做的好处是双重的,您可以启用细粒度访问控制,以便一个用户无法访问另一个用户的 s3 对象或 ddb 中的行,如果用户有多个设备并且您使用经过身份验证的用户,则用户可以看到相同的在移动设备之间转换时的数据。

于 2015-07-15T20:47:07.960 回答