首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将文件从移动设备上传到亚马逊S3体系结构

将文件从移动设备上传到亚马逊S3体系结构
EN

Software Engineering用户
提问于 2015-05-01 12:09:49
回答 1查看 1.5K关注 0票数 4

我有一个iOS应用程序,可以与我开发的REST通信。我使用亚马逊S3存储图像和音频文件。现在,我可以直接从移动应用程序(客户端)上传/下载文件。我目前正面临一些小文件(15-20 kB)上传/下载速度的问题,以及其他问题,比如亚马逊S3不允许超过15分钟的时间偏差(这意味着如果我的客户的时区或日期时间配置不正确,他们将无法从S3上传/下载这些文件。

针对这些问题,我现在面临一个架构决策,即将文件从S3上传/下载到我自己的API,临时存储它们,并将它们上传/下载到移动客户端。换句话说,从这一点变化:

代码语言:javascript
复制
S3 <----> iOS <----> REST API

对此:

代码语言:javascript
复制
S3 <----> REST API <----> iOS

优势:

  • 所有数据都由API处理和处理。
  • 如果客户端和存储(S3)不同步(时间偏差),则没有问题。
  • 客户的电话只与一个web服务通信

缺点:

  • 所有文件传输都是双向的。
  • API的网络流量大幅增加
  • 数据/数据包丢失的可能性增加,因此不得不重复整个过程

最好的选择是什么?保持原样,还是开始通过我自己的API开发文件传输?

EN

回答 1

Software Engineering用户

回答已采纳

发布于 2015-05-01 13:20:30

下载和上传小文件的速度可以很容易地通过将几个文件放入一个归档文件来规避(如果不需要压缩文件,最终可以使用0级压缩,例如JPEG文件)。如果用户上传了数百个文件,这将导致两到三个大文件.如果用户只需要上传一两个文件,那么速度就无关紧要了。

错误的日期和时间配置是用户的问题(几乎每一个连接到互联网的移动设备都应该自动同步吗?)您的应用程序可以使用NIST验证设备上的时间是否正确。如果由于某种原因,这是不可能的,那么使用您自己的REST来检查时间是否正确。如果时间不正确,请通知用户,在时间不对之前,同步是不可能的,询问他是否希望您的应用程序自动更正设备的时间。

让应用程序直接与亚马逊的S3交互还是使用REST作为中间人,主要取决于以下因素:

  • 谁拥有亚马逊的API密钥。您准备好为您的用户支付S3使用费了吗?还是希望他们自己直接付费?在第一种情况下,中间人API是有意义的。在第二种情况下,直接连接到S3。
  • 隐私,数据敏感性和法律问题。如果数据正在通过您的服务器进行转换,这意味着您可以访问它,也意味着您正在将其上载到S3。如果数据是敏感的,那么第一点是有问题的,如果客户没有正确地被告知数据结束在您的服务器上而不是Amazon的服务器上,您可能会被起诉(从法律上讲,如果您的服务器位于与Amazon不同的国家,这可能会变得更加有趣)。第二点是有问题的,如果用户上传内容,这是违反亚马逊的政策。想象一下有人上传儿童色情。对于Amazon来说,你上传了它,所以你将是一个负责任的人。
  • 带宽。如果您的服务器带宽很昂贵(为什么不是呢?),您最终将支付比支付给Amazon的带宽要高得多。更重要的是,您支付了文件实际大小的两倍,因为您首先接收它们,然后发送它们。
票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/280685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档