如何共享 S3 文件夹中的对象并获取它们的链接?

问题描述 投票:0回答:1

我通过 S3 JavaScript SDK 将文件上传到 S3 存储桶中的文件夹。现在我想共享该文件夹中的所有对象(也许稍后会有更多对象),因此我想获取所有对象的列表,创建它们的预签名 URL 并将此列表传递给客户端。我需要为每个对象生成一个链接吗?如何使用 SDK 创建这些链接?链接有效期可以超过12小时吗?

amazon-s3 aws-sdk aws-sdk-js aws-sdk-nodejs
1个回答
0
投票

不幸的是,S3 本身并不支持文件夹。相反,它使用平面结构,其中通过对象键中的前缀(例如,folder_name/)来模拟“文件夹”。您无法直接为“文件夹”创建预签名 URL,但您可以通过使用存储桶策略或使用具有必要权限的 IAM 角色来允许访问特定前缀(即“文件夹”)下的所有文件。

您可以考虑以下解决方法:

  1. 为“文件夹”中的所有文件生成预签名 URL: 您可以以编程方式为特定前缀(类似文件夹的结构)下的每个对象生成预签名 URL。

  2. 替代方案:使用具有前缀限制的 S3 存储桶策略: 如果您想共享对“文件夹”(前缀)下所有对象的访问权限而不生成多个预签名 URL,您可以配置 S3 存储桶策略,以授予特定用户或组对具有特定前缀的所有对象的访问权限。

© www.soinside.com 2019 - 2024. All rights reserved.