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

使用Terraform 1.3.6配置AWS S3存储桶生命周期规则时遭遇ARN格式错误,求可用示例

Terraform 1.3.6配置AWS S3存储桶生命周期规则时遭遇ARN格式错误,求可用示例

我明白你被ARN格式错误反复卡壳的困扰了,咱们直接来解决问题:

核心问题分析

你之前的错误根源在于**aws_s3_bucket_lifecycle_configuration资源的bucket参数只接受存储桶的名称,而非ARN或者其他格式**。不管是引用桶的arn属性,还是手动写ARN字符串,都会触发解析错误;第一次用id属性报错,大概率是Terraform AWS Provider版本的兼容性问题——部分版本中id的返回值不符合预期。

可用的完整配置示例

下面是适配Terraform 1.3.6的正确配置,细节都标注清楚了:

# 指定与Terraform 1.3.6兼容的AWS Provider版本
terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0" # 这个版本和Terraform 1.3.6完全兼容
    }
  }
}

# 配置AWS Provider区域
provider "aws" {
  region = "us-east-1" # 替换成你实际使用的AWS区域
}

# 创建S3存储桶(注意:桶名必须全局唯一,不能直接用"my-bucket",建议加自定义前缀/后缀)
resource "aws_s3_bucket" "my_bucket" {
  bucket = "my-unique-bucket-name-2024" # 替换成你自己的全局唯一桶名
}

# 配置存储桶生命周期规则
resource "aws_s3_bucket_lifecycle_configuration" "my_bucket_lifecycle" {
  # 直接引用桶的bucket属性(即桶名),这是最可靠的方式
  bucket = aws_s3_bucket.my_bucket.bucket

  rule {
    id     = "expire-after-31-days" # 规则ID尽量清晰易懂
    status = "Enabled"

    # 配置31天后自动过期的规则
    expiration {
      days = 31
    }
  }
}

额外注意事项

  • 务必确保你的S3桶名是全局唯一的,AWS不允许两个用户使用相同的桶名,直接用my-bucket大概率会创建失败,记得改成带个人标识的唯一名称。
  • 如果之前的错误配置导致Terraform状态文件有残留,可以先执行terraform destroy清理后再重新应用新配置。

备注:内容来源于stack exchange,提问作者Haim Raman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:59:50