多个文件的预签名网址?

nkl*_*nkl 12 amazon-s3 amazon-web-services aws-sdk

我已经编写了一个实现,用于为aws-s3上的存储桶生成预先签名的URL.它可以正常工作,用于获取单个文件/对象.

我如何为整个目录生成预先签名的URL?让我们这样说吧,在我的s3存储桶上,有多个文件夹都有自己的小html5应用程序.每个文件夹都有自己的一组html,css,js以及媒体文件.在这种情况下,我不会为单个对象生成预先签名的URL.

如果我为单个文件提供预先签名的URL,例如:文件夹的index.html,该文件也需要加载css,js和media文件.我们没有签名网址的文件.

我不太确定如何实施这个.

poi*_*ida 8

不,他们需要提供API以允许您首先上传多个文件.这是API的限制,而不是预签名.

请参阅是否可以批量上传到亚马逊s3?.

  • 我仍然不确定为什么这是公认的答案?我在这里解决了问题:/sf/answers/4748149451/ (6认同)

Joh*_*ein 7

否。预签名 URL 仅对一个对象有效。


Joh*_*lls 6

这是绝对可能的,并且已经存在多年了。conditions生成预签名 URL 时必须使用,特别是starts-with. 请参阅亚马逊官方文档

例如,这里是带有 Boto3 的 Python 生成一个预先签名的 POST url:

    response = s3.generate_presigned_post(
        "BUCKET_NAME",
        "uploads/${filename}",
        Fields=None,
        Conditions=[["starts-with", "$key", "uploads/"]],
        ExpiresIn=(10 * 60),
    )
Run Code Online (Sandbox Code Playgroud)

  • 我可以需要在该方法的关键参数上指定 **${filename}** 吗?但我想添加具有相同预定义帖子网址的多个不同文件。我想使用 `"uploads/"` 而不是 `"uploads/${filename}"` (3认同)
  • 这不是动态的。您需要为要上传的每个“${filename}”运行“generate_presigned_post”。 (2认同)
  • 条件是不是只是对此请求的附加限制,但原则上密钥必须匹配:“uploads/${filename}”? (2认同)