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
相关产品推荐
相关产品推荐

