【问题标题】:Sending image as encoded and uploading to s3 after decoding it将图像作为编码发送并在解码后上传到 s3
【发布时间】:2016-02-16 21:05:16
【问题描述】:

我正在尝试在 s3 上上传非常重的文件。现在图像首先转到服务器临时,然后我将其上传到 s3。但是这个过程很耗时,如果多个用户同时上传大量图像,则会消耗高带宽,从而影响生产站点。鉴于我还有 3 个尺寸要上传,因此我正在调整上传图像的大小,同时将其他 3 个调整大小的图像发送到 s3。

我对此进行了研究,发现了这 3 种可能的解决方案..

  1. 将图像直接上传到 s3..这被排除在外,因为在这种情况下我们必须公开 aws 密钥,而我们不能这样做。
  2. 在队列中添加所有图像并运行一些作业..在这种情况下,作业将在调整图像大小后稍后将图像从服务器上传到 s3。这被排除了,因为这也会消耗一些带宽并且肯定会影响服务器性能,而且我们还配置了 aws-eb,所以一旦我们部署服务器,图像就会丢失,因此无法使用。
  3. 使用 javascript.. 在这种情况下,我们将从 javascript 将图像编码为 base64,并使用 ajax 将图像发送到服务器,然后尝试在那里解码并将其保存在某处然后上传到 s3。

所以我的问题是,它会节省使用第三个选项上传重图像的时间吗? 我可以将编码的图像发送到服务器,但它会为用户节省一些上传时间吗?

如果没有,那么在将大量图像上传到 s3 时,我还能做些什么来节省服务器的时间和带宽。 请帮忙。

【问题讨论】:

  • “在这种情况下,我们必须公开 aws 密钥,而我们不能” 如果这是真的,那么某个地方的某个人不了解 AWS 的工作原理。您的 AWS 访问密钥不是秘密。它旨在以签名的 URL 和表单形式公开。这样做是正常的、标准的做法。您的密钥不会暴露,没有它,访问密钥将毫无用处。

标签: javascript php image amazon-web-services amazon-s3


【解决方案1】:

如果可能,您应该直接上传到 Amazon S3。这避免了文件的“双重处理”,是一种更具可扩展性的解决方案。

您担心“暴露 AWS 密钥”。没有必要担心。您可以使用Security Token Service 以一组有限的权限生成临时的、有时间限制的凭据。它是这样工作的:

  • 您的应用程序对用户进行身份验证并检查他们是否有权将对象上传到 Amazon S3
  • 您的应用程序调用安全令牌服务并请求一组临时凭证,其权限仅允许上传到 Amazon S3 中的特定存储桶和子目录
  • 将这些凭据传递给您的用户,或在网页中使用它们,以允许他们上传对象

AWS 的关键概念是为大规模设计。直接上传到 Amazon S3 可以实现这一点,而首先上传到您自己的服务器会导致瓶颈(并且会花费更多钱!)。

【讨论】:

  • 嗨,John,这听起来很有前途,而且成本和可扩展的友好解决方案,会试一试。
【解决方案2】:

数字 2 实际上是处理图像处理时的推荐选项。您还可以使用 Lambda 函数进行图像转换。 (http://docs.aws.amazon.com/lambda/latest/dg/walkthrough-s3-events-adminuser.html)

只要将图像添加到特定的 S3 存储桶,就会触发该作业。

如果需要,也可以直接上传图片到S3(http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html

【讨论】:

  • 您好,非常感谢您的解决方案,将试一试,看看它的效率如何,我认为这肯定会在此过程中占用一些服务器带宽。
【解决方案3】:

我不确定你是否已经这样做了,但是我已经使用了 javascript sdk 来做到这一点,我正在做你正在做的事情,将图像保存在另一台服务器上,然后将它们转移到 s3,但是使用javascript sdk 你可以直接进入s3,你可以添加事件来处理图像到达后。

  • 使用 Cognito 获取未经身份验证的用户/经过身份验证的用户的访问权限。
  • 在相关存储桶中以经过身份验证的用户身份授予权限。
  • 在配置编辑器中编辑 CORS。
  • 使用 javascript sdk 中的代码做任何你想做的事。

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 2015-08-20
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2020-09-03
    • 2016-04-13
    • 2014-04-15
    相关资源
    最近更新 更多