首页 > 解决方案 > 大文件时 S3 预签名 url 失败

问题描述

我有一个适用于任何小文件的预签名。

当我尝试上传更大的文件时,我在帖子中收到 ACCESS DENIED ,而正文中没有任何其他消息。

有趣的是,如果我继续尝试,在几次被拒绝的命中后,它就会起作用。这完全是随机的......

当访问未被拒绝时,该条件通过在文件大于 100mb 时给出正确的错误返回和消息来起作用。但问题是帖子的很大一部分被拒绝了......

这被拒绝发生在亚马逊地址的帖子中,所以我无法访问它的任何日志......

相同的帖子和脚本:

好的文件: 在此处输入图像描述

拒绝访问: 在此处输入图像描述

这是代码:

const S3 = new AWS.S3({
    signatureVersion: 'v4',
    region: region
});


const params = {
    Expires: linkExpiresSecs,
    Bucket: bucketName,
    Conditions: [
        ["content-length-range", 1, 104857600]
    ],
    Fields: {
        key: keyFile
    }
};


const response = await S3.createPresignedPost(params);

标签: amazon-web-servicesamazon-s3

解决方案


我认为链接的有效性在为更大的文件下载文件之前到期。至于有时下载成功的行为,可能是由于网络情况,例如较少的拥塞。或文件的某些部分先前已缓存。


推荐阅读