Aws lambda用途与移动

时间:2018-01-29 23:27:39

标签: android performance amazon-s3 aws-lambda

我在swift上的移动设备上有一个csv文件,我想将它传递给AWS lambda,然后再处理该文件。

我读到APi网关可以将其作为二进制文件发送,但是可能存在文件大小变为20MB的情况,因此这似乎不合理。

我确实想到了另一个解决方案,即上传到s3,然后让s3触发一个lambda函数,然后将其用作原样。

我对此解决方案的问题是处理必须实时完成,上传到s3可能需要一段时间,用户将等待文件上传,然后lambda处理然后lambda的响应,我不要认为这会完成,假设有20万条记录的文件和一个复杂的处理算法可以说5秒钟?

另外,请问;从理论上讲,如果文件大小低于或大约10MB,那么最佳解决方案是什么?

由于

编辑:

我也在考虑使用cloudfront,但是文件上传时间和可用时间有时会出现延迟,我只希望这些文件在缓存中可以使用几分钟。

1 个答案:

答案 0 :(得分:0)

我认为直接上传到Lambda不会对您的案例有效,主要原因是Lambda payload size limits

以下是您可以做的事情:

  • 生成pre-signed URL以允许您的客户端将文件直接上传到S3
  • 让Lambda使用流
  • 响应在S3存储桶中创建的对象
  • Lambda将处理该文件并使用AWS SNS将结果发送给客户端 - 或者 - 您可以保留Lambda结果(S3,Dynamo,RDS ...)并拥有客户端将要求的另一个API端点第二,检查结果是否可用

发送到S3然后在Lambda上处理不会给流程增加那么多延迟。在Lambda中从S3重新传输文件应该非常快,特别是如果两者都在同一区域,并且S3流速度也很快(我认为不应超过250毫秒)。

但最好是部署此解决方案并测试延迟以确定它是可接受的。