【问题标题】:Coupling Amazon EC2, Amazon S3 and Android app for photo sharing结合 Amazon EC2、Amazon S3 和 Android 应用程序进行照片共享
【发布时间】:2012-12-25 10:03:30
【问题描述】:

我决定在我的 Android 云应用程序中使用 Amazon AWS,这是一个照片共享应用程序。我用 PHP 和 MySql 在 EC2 上建立了一个实例,用于处理简单的请求和存储基本的用户信息。我还设置了一个 S3 服务来存储所有照片。

但现在我想要一些建议。我不确定如何同时处理这三个。 EC2 服务器是否应该始终用作使用应用程序的最终用户和 S3 服务之间的中介?或者,Android 上的最终用户是否应该在可能的情况下直接与 S3 通信?

例如,用户在我的应用上注册并决定上传图片。我是否应该将 JPEG 发送到我的 EC2 服务器,然后让服务器将图片发送到 S3?还是应该直接将其发送到 S3,在设备上取回 URL,然后将其发送到我的 EC2 服务器?无论哪种方式,我都需要将 S3 url 地址存储在我的 MySQL 数据库中,以便将它们发送给其他用户,以便他们可以访问新公开的图像。

知道我应该怎么做吗?

【问题讨论】:

    标签: android amazon-s3 amazon-ec2


    【解决方案1】:

    我认为你真的别无选择。为了安全起见,您将不得不通过 EC2。如果手机应用程序直接上传到 S3,则意味着 S3 存储桶要么是公开可写的,要么访问凭证存储在用户的手机上,这两者都是危险的。这意味着您需要通过 EC2 上传或至少让 EC2 向 S3 颁发限时凭证(不确定后者是否可行或一个好主意)。

    如果您愿意允许任何人查看任何图片,那么您可以让 S3 实例公开可读,手机应用程序只需从 EC2 实例获取 url,然后直接从 S3 下载图片。这将减轻一些 EC2 负载。

    减轻 EC2 负载的另一种方法是拥有一个专用的 EC2 实例,仅用于处理与运行数据库的实例分开的上传。这样,如果您的上传服务器受到重创,您的应用仍然可以访问数据库、检索 S3 url 并下载图片。

    您还需要考虑应用的可扩展性和正常运行时间。 Amazon 对单个 EC2 实例甚至单个可用区都没有任何正常运行时间保证,因此如果您希望您的服务器可靠地在那里,您需要至少跨两个可用区进行扩展。 (两个区域也不是一个坏主意,但对于大多数应用程序来说太过分了。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多