在另一个区域上运行ec2实例的上传速度很慢

时间:2018-06-03 01:59:48

标签: amazon-web-services amazon-s3 amazon-ec2

我在us-east-1地区(弗吉尼亚州北部)的负载均衡器后面有几个EC2实例(t2.micro),我的用户正在从南美洲访问该应用程序。这是我目前的设置,主要是因为费用大约是我支付巴西相同服务费用的50%。

我的上传内容全部转到S3存储桶,也位于us-east-1区域。

当用户从我的应用程序请求文件时,我检查权限是因为存储桶不公开(因此我需要所有数据通过EC2实例)并且我将文件从S3流式传输给用户。用户的下载速度很好,通常达到用户连接可以处理的最大速度,因为我已经为我的存储桶启用了传输加速。

我的问题是通过EC2实例上传文件。上传速度受到很大影响,在这种情况下,在S3上启用传输加速并没有任何帮助。感觉我被AWS扼杀了,因为最高速度限制在1Mb / s左右。

我可以将文件直接从用户传输到S3,然后更新我的数据库,但这会给我的主要工作流程带来一些问题。

所以,我有两个问题:

1)EC2实例的上传速度是否正常受到影响?

2)除了将所有服务移至南美洲之外,我还有哪些选择?更靠近我的用户?

提前致谢!

1 个答案:

答案 0 :(得分:2)

无需通过Amazon EC2实例从Amazon S3“流式传输”数据。也没有必要通过Amazon EC2“上传”。

相反,您应该使用预签名网址。这些URL授予对Amazon S3上传或下载的限时访问权限。

它的工作方式是:

  • 您的应用程序会验证是否允许用户上传/下载文件
  • 然后,应用程序生成一个带有到期时间(例如5分钟)的预签名URL
  • 应用程序将URL提供给客户端(例如移动应用程序)或将其包含在HTML页面中(作为下载链接或上传表单)
  • 然后,用户将文件直接上传/下载到Amazon S3

结果是高度可扩展的系统,因为您的EC2系统不需要参与实际的数据传输。

请参阅: