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

S3存储桶策略配置报错:MalformedPolicy 策略语法无效

AWS S3 Bucket Policy Terraform配置报错排查与修复

报错原因分析

你遇到的MalformedPolicy错误由两个策略语法问题导致:

  • Principal格式错误:指定CloudFront服务主体时,必须使用Service键值对的结构,不能直接将服务域名作为字符串赋值给Principal。
  • Resource通配符错误:S3策略中,桶内所有对象的正确通配符是/*,而非/**,/**不符合AWS IAM策略的通配符规则。

修复后的Terraform代码

resource "aws_s3_bucket_policy" "bucket_policy" {
  bucket = aws_s3_bucket.bucket.id
  
  policy = jsonencode({
     Version = "2012-10-17"
     Id      = "AllowGetObjects"
     Statement = [
        {
          Sid       = "AllowPublic"
          Effect    = "Allow"
          # 修正Principal格式:使用Service嵌套结构指定CloudFront服务
          Principal = {
            Service = "cloudfront.amazonaws.com"
          }
          Actions    = ["s3:GetObject", "s3:PutObject"]
          # 修正Resource通配符:使用/*匹配桶内所有对象
          Resource  = "${aws_s3_bucket.bucket.arn}/*"
        }
      ]
   })
}

额外说明

如果你的CloudFront分发使用的是OAI(Origin Access Identity)而非服务主体,需要将Principal替换为OAI的ARN,格式示例:"arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXX"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:32:36