如何从S3下载数百个机密文件?

时间:2019-03-13 15:03:50

标签: amazon-web-services amazon-s3

我正在使用S3为客户存储一堆机密文件。存储桶不能具有公共访问权限,只有经过身份验证的用户才能访问这些文件。

这是我目前的想法

我正在使用Cognito对用户进行身份验证,并允许他们访问API网关。当他们向路径/files发出请求时,它会将请求定向到lambda,该lambda也会为用户也可以访问的每个文件生成一个签名的url。然后API Gateway返回所有这些已签名URL的列表,浏览器将显示它们。

为每个文件收集签名的URL似乎效率很低。还有其他方法可以从S3批量获取机密文件吗?

2 个答案:

答案 0 :(得分:2)

一种更安全的方法是使您的应用程序生成对单个请求或期间有效的签名URL,并使您的存储桶仅接受使用Origin Access Identity源自CloudFront的请求。

请参阅https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

的相关文档

答案 1 :(得分:1)

您说“为每个文件收集签名的URL看起来效率很低”,但是创建签名URL本身的过程非常简单-只需几行代码。

但是,如果文件太多,则用户要单独下载每个文件会花费很多工作。

因此,另一种方法可能是:

  • 确定他们希望下载的所有文件
  • 创建文件的邮政编码并将其存储在Amazon S3中
  • 为Zip文件提供签名URL
  • 稍后
  • 删除(由于不再需要)Zip文件,可能是通过在存储桶中的文件夹上创建生命周期规则

请注意,AWS Lambda函数的磁盘存储限制为500MB,这可能不足以创建Zip文件。