【问题标题】:How do I apply a lifecycle rule to an EXISTING s3 bucket in Terraform?如何将生命周期规则应用于 Terraform 中的现有 s3 存储桶?
【发布时间】:2021-02-07 13:39:22
【问题描述】:

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-services amazon-s3 terraform terraform-provider-aws


    【解决方案1】:

    解决此问题的最佳方法是将存储桶导入 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,就会添加生命周期规则。

    【讨论】:

    • 谢谢!正是我需要的。
    • 不错!没问题!
    猜你喜欢
    • 2019-08-17
    • 2022-01-02
    • 2021-04-18
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2022-11-29
    • 1970-01-01
    相关资源
    最近更新 更多