从AWS S3存储桶访问文件

时间:2020-03-03 14:31:55

标签: node.js amazon-web-services amazon-s3

我正在使用NodeJS将文件上传到我的S3存储桶中。作为回应,我收到了该文件的链接。

例如,我收到https://my-bucket-name.s3.ap-south-1.amazonaws.com/testUpload_s.txt

该存储桶目前不允许公共访问。我应该如何从存储桶安全地访问文件?我想知道以下方法是否安全?

  1. 允许存储桶的公共访问权限

  2. 在上传过程中,每个文件都会被赋予一个随机的唯一名称

  3. 此文件名或响应URL存储在数据库中

  4. 当必须提取文件时,我使用从 上传响应以从存储桶访问文件

这种方法安全吗?如果没有,是否有其他方法可以做到?

2 个答案:

答案 0 :(得分:1)

有许多选项可让客户端访问S3中的对象,包括:

  1. 将对象设为公开
  2. 要求客户端使用AWS凭证进行身份验证
  3. 为客户提供一个限时的,预签名的URL

它们各自提供不同的用例。如果任何人都可以安全访问文件,则使用#1(例如,文件是在公共网站上显示的图像)。如果客户端具有AWS凭证,请使用#2。如果您不想公开文件,但客户端没有AWS凭证,请使用#3。注意#3,预签名URL是有时间限制的。

答案 1 :(得分:0)

您不需要存储URL。您可以使用文件名查询S3存储桶中的对象。

用于从外部访问使用签名的URL。

https://docs.aws.amazon.com/sdk-for-go/v1/developer-guide/s3-example-presigned-urls.html