您是否可以限制可以上传到公共S3存储桶的最大文件大小?

Col*_*tru 8 amazon-s3 amazon-web-services amazon-iam

我正在构建一个Web应用程序,它可以使用AWS for Browsers SDK将文件直接上传到公共S3存储桶.

我想限制可以上传的最大文件大小,虽然我可以对文件大小进行客户端验证,但纯客户端解决方案不是很健壮,我想添加一个服务器端验证也是如此.是否可以使用IAM角色为"S3:PutObject"操作执行此操作?

Mic*_*ick 5

您可以在设置签名上传 URK 以便通过浏览器直接上传 S3 时创建的 s3Policy 中设置最小和最大文件大小。

这是一个示例(来自 Node.js 应用程序的 JavaScript) - 请参阅底部的“内容长度范围”部分:

var s3Policy = {
        'expiration': expiration,
        'conditions': [{
                'bucket': aws.bucket
            },
            ['starts-with', '$key', path], 
            {
                'acl': readType
            },
            {
              'success_action_status': '201'
            },
            ['starts-with', '$Content-Type', request.type],
            ['content-length-range', 2048, 124857600], //min and max
        ]
    };
Run Code Online (Sandbox Code Playgroud)

如果用户上传超过 S3 的文件,则会返回 400 错误请求,其正文中包含一条消息,表明已超出最大文件大小限制。


Séb*_*acq 1

您可以使用上传表单中的 content-length-range 属性来限制上传对象的大小。

这是相关的文档页面:http://doc.s3.amazonaws.com/proposals/post.html#Limiting_Uploaded_Content

  • 损坏的链接,请参阅以下文档:https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html (3认同)