You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Bucket Policy限制Amazon S3存储桶PUT上传的对象大小

如何通过S3 Bucket Policy限制PUT上传的对象大小?

嘿,这个问题我熟!你说得没错,确实要靠Condition Block来实现,对应的条件键是s3:content-length-range——这就是AWS专门用来匹配上传对象大小的工具,它会检查HTTP请求里的Content-Length头部(也就是你要上传的对象实际字节数)。

核心思路

我们可以通过拒绝不符合大小要求的PutObject请求来实现限制:当用户上传的对象大小超出你设定的范围时,Bucket Policy会直接拒绝这次上传操作。

完整示例Policy

假设你想限制上传的对象必须在1MB(1048576字节)到10MB(10485760字节)之间,对应的Bucket Policy如下:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::your-bucket-name/*",
      "Condition": {
        "ContentLengthRange": {
          "s3:content-length-range": ["1048576", "10485760"]
        }
      }
    }
  ]
}

关键部分解释

  • Version: 固定用2012-10-17,这是AWS当前推荐的Policy版本,功能最完善。
  • Effect: Deny: 表示当后续条件满足时,拒绝对应的操作(这里就是拒绝不符合大小要求的上传)。
  • Principal: *: 针对所有访问该桶的用户/角色。如果你只想限制特定IAM身份,可以替换成对应的ARN,比如arn:aws:iam::123456789012:user/your-specific-user。
  • Action: s3:PutObject: 明确要限制的是上传对象的操作。
  • Resource: 把your-bucket-name换成你的实际桶名,/*表示覆盖桶内所有对象。
  • Condition: 这里用ContentLengthRange运算符,配合s3:content-length-range键,数组里的两个值分别是允许的最小和最大字节数。当上传对象的大小不在这个范围内时,就会触发Deny规则。

灵活调整规则

如果你只需要单方向的限制,比如:

  1. 只限制最大大小(比如不能超过10MB):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::your-bucket-name/*",
          "Condition": {
            "NumericGreaterThan": {
              "s3:content-length-range": "10485760"
            }
          }
        }
      ]
    }
    

    这样只要上传对象超过10MB,就会被拒绝。

  2. 只限制最小大小(比如至少1MB):

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:PutObject",
          "Resource": "arn:aws:s3:::your-bucket-name/*",
          "Condition": {
            "NumericLessThan": {
              "s3:content-length-range": "1048576"
            }
          }
        }
      ]
    }
    

额外注意点

不用担心有人篡改Content-Length头部来绕过限制——S3会自动验证实际上传的字节数和请求头部的Content-Length是否一致,如果不一致,上传会直接失败,不会存储到桶里。

内容的提问来源于stack exchange,提问作者user2344448

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:22:28