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

Terraform配置AWS S3桶策略时出现MalformedPolicy无效Action报错问题

S3桶策略MalformedPolicy报错排查解决

核心问题定位

你提供的配置代码存在两个语法错误,直接导致生成的策略Action字段非法:

  • Action = "s3:CopyObject 行末尾缺失双引号闭合,jsonencode生成的策略会将后续的注释、换行符等内容拼接为Action的值,AWS识别为非法动作
  • 你注释了多Action的数组配置,当前Action字段为不完整的单字符串,不符合IAM策略语法要求

修复示例

单Action配置(仅允许CopyObject)

resource "aws_s3_bucket_policy" "awsbucketprodpolicy" {
    bucket = local.prodtbucket
    policy = jsonencode({
        Version = "2012-10-17"
        Statement = [
            {
                Effect = "Allow"
                Principal = "*"
                Action = "s3:CopyObject"
                Resource = [
                    aws_s3_bucket.prodbucket.arn,
                    "${aws_s3_bucket.prodbucket.arn}/*",
                ]
            }
        ],
    })
}

多Action配置(允许CopyObject/DeleteObject/GetObject)

resource "aws_s3_bucket_policy" "awsbucketprodpolicy" {
    bucket = local.prodtbucket
    policy = jsonencode({
        Version = "2012-10-17"
        Statement = [
            {
                Effect = "Allow"
                Principal = "*"
                Action = ["s3:CopyObject","s3:DeleteObject","s3:GetObject"]
                Resource = [
                    aws_s3_bucket.prodbucket.arn,
                    "${aws_s3_bucket.prodbucket.arn}/*",
                ]
            }
        ],
    })
}

额外校验步骤

如果修复后仍有报错,可按以下步骤排查:

  • 执行terraform plan查看输出的policy字段JSON结构是否正常,无多余字符
  • 校验S3动作拼写是否正确,S3动作大小写敏感,必须严格遵循官方命名规则
  • 确认配置的动作和Resource对应,对象级动作需要匹配/*后缀的资源ARN,桶级动作匹配桶ARN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:00:02