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

Terraform创建S3 Bucket Policy遇400错误:MalformedPolicy问题求助

解决Terraform创建S3 Bucket Policy时的MalformedPolicy错误

报错信息

Error: putting S3 Bucket (web-net-app-andreiweb-aasdasfasfasdasg234dsf21312b) Policy: operation error S3: PutBucketPolicy, https response error StatusCode: 400, RequestID: 3082W83VXY47PFBR, HostID: hLSrf/QmpECefnmArGbhMy2bv4+lVCdqsdPj5SkRt2cgJ611hUZfJ2/6YuWF5pj1l4ACI3HH8pM=, api error MalformedPolicy: Policy has invalid resource

涉及资源:aws_s3_bucket_policy.s3bucket_allow_all,位于s3.tf第13行。

问题原因及修复步骤

1. Bucket Policy的Resource字段格式不符合S3要求

S3不允许直接用*作为Policy的Resource值,必须指定桶的完整ARN以及桶内对象的ARN路径通配符。

2. 公开访问控制配置冲突

你的aws_s3_bucket_public_access_block中设置了block_public_policy = true,该配置会直接阻止所有公开Bucket Policy的生效,和你想要配置的公开读取权限完全冲突,必须调整对应参数。

修改后的s3.tf关键代码片段

修正Bucket Policy部分

resource "aws_s3_bucket_policy" "s3bucket_allow_all" {
  bucket = aws_s3_bucket.myFirstBucket.id

  policy = jsonencode({
    "Version" : "2012-10-17",
    "Statement" : [
      {
        "Sid" : "AllowPublicRead",
        "Effect" : "Allow",
        "Principal" : "*",
        "Action" : [
          "s3:GetObject"  # 遵循最小权限原则,仅赋予公开读取所需权限,不建议用*
        ],
        "Resource" : [
          "${aws_s3_bucket.myFirstBucket.arn}",
          "${aws_s3_bucket.myFirstBucket.arn}/*"
        ]
      }
    ]
  })
}

修正公开访问控制部分

如果需要桶支持公开访问,调整aws_s3_bucket_public_access_block参数:

resource "aws_s3_bucket_public_access_block" "myFirstBucket-public-access" {
  bucket = aws_s3_bucket.myFirstBucket.id

  block_public_acls       = false
  block_public_policy     = false  # 必须设为false才能让公开策略生效
  ignore_public_acls      = false
  restrict_public_buckets = false
}

额外提示

  • 若你的桶不需要公开访问,应保留block_public_policy = true,同时将Bucket Policy修改为私有访问策略(比如仅允许特定IAM用户访问)。
  • S3对象的key不要以/开头,比如/website/index.html应改为website/index.html,避免创建无效的对象路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 10:44:56