使用存储桶策略限制 S3 文件上传大小的任何方法?

Any way to limit S3 file upload size using bucket policy?

我正在基于浏览器上传到我的 S3 存储桶,当然,当这样做时,没有什么可以阻止最终用户上传任意大小的任何文件。

有没有办法修改存储桶策略以防止此类滥用?

这是我当前的存储桶策略:

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Statement1",
        "Effect": "Allow",
        "Principal": "*",
        "Action": [
            "s3:GetObject",
            "s3:PutObject"
        ],
        "Resource": "arn:aws:s3:::mybucket/*"
    },
    {
        "Sid": "Statement2",
        "Effect": "Allow",
        "Principal": "*",
        "Action": "s3:ListBucketVersions",
        "Resource": "arn:aws:s3:::mybucket"
    }
]

}

Is there a way to modify the bucket policy to prevent abuse of this kind?

没有。相反,您必须完全修改您的应用程序并只允许 授权用户 上传内容。您对 "Principal": "*",s3:PutObject 的政策是 不良做法 导致了您的问题。

所以你必须实现某种登录系统(可以使用 Amazon Congito),只有登录后授权用户才能上传文件。但不能直接上桶。相反,您应该使用 S3 presigned urls.

同样,应该禁止直接从S3下载文件。相反,应该使用 CloudFront with S3