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

如何用Terraform为已有AWS S3桶添加桶策略?报错解决

解决Terraform为已有S3桶添加策略时的TemporaryRedirect错误

错误核心原因

出现TemporaryRedirect错误主要由以下问题导致:

  • 硬编码S3全局端点,未匹配桶所在区域的专属端点
  • 桶名与策略中资源ARN拼写不一致,请求逻辑冲突
  • 冗余的依赖配置无意义,干扰Provider正常执行逻辑

解决方案与修正代码

1. 移除硬编码的S3端点配置

AWS Provider会根据指定region自动匹配对应区域的S3端点,无需手动指定全局端点,避免跨区域请求引发重定向。

2. 统一桶名与策略资源ARN

确保bucket参数和策略中Resource里的桶名完全一致,否则策略无法正确关联目标桶。

3. 删除不必要的依赖

data.aws_region.current未被代码引用,对应的depends_on配置可直接移除。

修正后的完整代码:

provider "aws" {
  region = "us-east-1" # 务必与目标S3桶实际所在区域保持一致
}

resource "aws_s3_bucket_policy" "s3_bucket_policy" {
  bucket = "abcde-us-east-1" # 已有S3桶的准确名称

  policy = jsonencode({
    "Version" : "2012-10-17",
    "Statement" : [
      {
        "Effect" : "Allow",
        "Principal" : "*",
        "Action" : "s3:GetObject",
        "Resource": [
          "arn:aws:s3:::abcde-us-east-1/*",
          "arn:aws:s3:::abcde-us-east-1"
        ]
      }
    ]
  })
}

额外验证步骤

  • 登录AWS控制台确认目标S3桶的实际区域,确保Terraform Provider的region参数完全匹配
  • 执行terraform plan检查配置合法性,确认无资源不匹配警告
  • 执行terraform apply完成策略添加,无需迁移桶内数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 09:47:02