从后端在AWS中保存图像

时间:2018-04-13 19:51:51

标签: amazon-web-services file-upload image-uploading

我们需要在AWS中保存产品图片。有两种方式,可以从前端(网站或移动应用程序)或后端上传。

在前端,我们需要存储AWS凭据,这可能是一个问题。因此,我们希望从后端使用AWS上传。流程将是:用户选择一个图像,然后将其上传到后端,后端将其上传到AWS。

这可以吗?会出现什么问题?

2 个答案:

答案 0 :(得分:2)

将它上传到你的后端,可能是ec2实例,然后让ec2实例将文件上传到s3没有任何问题 - 这是一种安全的方法,也是我经常使用的方法。

但是,如果您希望直接从浏览器上传到s3,则无需将aws凭据公开给浏览器 - 您只需要将AWS Cognito添加到等式中。

使用cognito,您可以获得临时凭据,以便在不影响安全性的情况下进行上传。

https://aws.amazon.com/sdk-for-browser/

答案 1 :(得分:1)

您还可以使用在后端生成的预先签名的S3网址(请参阅:Uploading Objects Using Pre-Signed URLs)并传递给前端应用。然后流程将是这样的:

  1. 从后端服务中请求预先签名的网址
  2. 前端应用将文件投放到签名网址
  3. 在后端签署URL看起来像这样(Ruby):

    s3 = Aws::S3::Resource.new(region: 'us-east-1')
    url = s3.bucket('my-bucket').object('name-of-file').presigned_url(:put)
    

    在前端,您可以使用fetch简单地执行此类操作:

    fetch(signedUrl, { method: 'PUT', body: file })