首页 > 解决方案 > 如何将生命周期规则应用于 Terraform 中的现有 s3 存储桶?

问题描述

Terraform 的新手。尝试将生命周期规则应用于声明为数据源的现有 s3 存储桶,但我想我不能对数据源执行此操作 - 会引发错误。这是我要实现的目标的要点

data "aws_s3_bucket" "test-bucket" {
  bucket = "bucket_name"
  lifecycle_rule {
    id = "Expiration Rule"
    enabled = true
    prefix = "reports/"
    expiration {
      days = 30
    }
  }
}

...如果这是一种资源,而不是数据源,那么它会起作用。如何将生命周期规则应用于声明为数据源的 s3 存储桶?Google Fu 在结果方面收效甚微。谢谢!

标签: amazon-web-servicesamazon-s3terraformterraform-provider-aws

解决方案


解决此问题的最佳方法是将存储桶导入 terraform 状态,而不是将其用作data.

为此,请尝试将其放在您的 terraform 代码中:

resource "aws_s3_bucket" "test-bucket" {
  bucket = "bucket_name"
  lifecycle_rule {
    id = "Expiration Rule"
    enabled = true
    prefix = "reports/"
    expiration {
      days = 30
    }
  }
}

然后在终端上运行:

terraform import aws_s3_bucket.test-bucket bucket_name

这会将存储桶导入您的状态,现在您可以使用 terraform 进行更改或向存储桶添加新内容。

最后一步刚刚运行terraform apply,生命周期规则将被添加。


推荐阅读