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

Terraform创建AWS S3桶策略报错:MalformedPolicy: Unknown field version

解决S3桶策略MalformedPolicy错误:Unknown field version

问题原因

你遇到的MalformedPolicy: Unknown field version错误,核心原因是IAM策略文档的版本字段键名大小写不符合AWS要求。AWS规定策略中的版本字段必须是首字母大写的Version,而你代码里写的是小写的version,这会被S3判定为无效字段,导致策略格式校验失败。

修复后的代码

修改aws_s3_bucket_policy资源内的策略部分,将小写的version替换为首字母大写的Version即可:

resource "aws_s3_bucket_policy" "static-website-public-read" {
  bucket = aws_s3_bucket.static_website.id

  policy = jsonencode({
    Version = "2012-10-17"  # 修正为大写开头的Version
    Statement = [
      {
        Sid       = "PublicReadGetObject"
        Effect    = "Allow"
        Principal = "*"
        Action    = "s3:GetObject"
        Resource  = "${aws_s3_bucket.static_website.arn}/*"
      }
    ]
  })
}

验证修复

修改完成后重新执行terraform apply,S3会正确识别合法的策略格式,允许公共读取桶内对象的权限将被正常配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:20:59