确定适用于移动应用程序的最佳AWS工具

时间:2015-07-14 23:49:50

标签: amazon-web-services amazon-s3 amazon-dynamodb amazon-cognito aws-lambda

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

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

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

2 个答案:

答案 0 :(得分:1)

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

我还建议您使用SNS进行移动推送通知,因为这很好地与您的架构的其余部分保持一致。

答案 1 :(得分:0)

除非你试图将输入的处理与摄取分开,否则S​​3似乎没有给这个流增加太多的价值。您可以直接从移动应用程序调用Amazon Lambda,并直接从lambda将结果写入ddb。

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