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

配置S3存储桶策略遇AccessDenied报错:已赋权限仍无法解决

排查S3存储桶策略配置403 AccessDenied报错的可能原因

可能的原因及修复方案

1. 公共访问块配置顺序颠倒

你的aws_s3_bucket_public_access_block资源设置了依赖于aws_s3_bucket_policy,这会让Terraform先尝试写入公共桶策略,再关闭公共访问限制。但S3默认的公共访问设置中,block_public_policy通常是开启状态,此时直接写入包含Principal: "*"的公共策略会被拦截,触发403错误。

修复:调整依赖顺序,先关闭公共访问限制,再设置桶策略:

resource "aws_s3_bucket_public_access_block" "s3-static-bucket-public-access-block" {
  bucket = aws_s3_bucket.s3-static-bucket.id
  block_public_acls       = false
  block_public_policy     = false
  ignore_public_acls      = false
  restrict_public_buckets = false
}

resource aws_s3_bucket_policy s3-static-bucket {
  bucket = aws_s3_bucket.s3-static-bucket.bucket
  policy = data.template_file.s3-static-policy_1.rendered
  # 依赖公共访问块配置完成
  depends_on = [ aws_s3_bucket_public_access_block.s3-static-bucket-public-access-block ]
}

2. IAM权限存在隐性限制

即便你已添加s3:GetBucketPolicy和s3:PutBucketPolicy权限,仍需排查:

  • 权限是否带有条件约束(比如限制了访问IP、资源ARN不匹配)
  • 账号是否存在服务控制策略(SCP),禁止了S3公共策略的写入操作
  • 当前IAM身份是否是桶的所有者,或被桶所属账号明确授予了跨账号策略操作权限(如果桶属于其他AWS账号)

3. 所有权控制配置时机不合理

aws_s3_bucket_ownership_controls设置为BucketOwnerPreferred,虽不直接影响策略写入,但建议将其放在桶创建后、策略写入前完成,确保所有权配置生效:

resource "aws_s3_bucket_ownership_controls" "example" {
  bucket = aws_s3_bucket.s3-static-bucket.id
  rule {
    object_ownership = "BucketOwnerPreferred"
  }
}

resource aws_s3_bucket_policy s3-static-bucket {
  bucket = aws_s3_bucket.s3-static-bucket.bucket
  policy = data.template_file.s3-static-policy_1.rendered
  depends_on = [ 
    aws_s3_bucket_public_access_block.s3-static-bucket-public-access-block,
    aws_s3_bucket_ownership_controls.example
  ]
}

4. 桶策略模板硬编码问题

你的policy.json.tpl中资源ARN是硬编码的arn:aws:s3:::test-static3/*,若后续修改桶名会导致不匹配。建议改用模板变量动态生成:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::${bucket}/*"
            ]
        }
    ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 09:53:08