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

时间:2014-11-25 20:15:21

标签: amazon-web-services amazon-s3 amazon-iam

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

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

以下是一个示例(来自node.js app的JavaScript) - 请参阅底部的“content-length-range”部分:

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
        ]
    };

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