amazon-web-services - 如何将生命周期规则应用于 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 在结果方面收效甚微。谢谢!
解决方案
解决此问题的最佳方法是将存储桶导入 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
,生命周期规则将被添加。
推荐阅读
- python-3.x - 对于子图中的每个子图,格式化 yticks 以以 10 为步长显示百分比 (0-100)%
- c# - WPF:在另一个窗口旁边放置一个新窗口
- powershell - 表达式或语句中出现意外标记
- regex - PowerShell - 在同一行查找和替换多个模式并将对应关系存储在单独的文件中
- python - 在执行我的 Python 代码时出现“EOFError: EOF when reading a line”。我该如何解决?
- mysql - 如何添加名字和姓氏作为查询结果?
- c++ - 在 cv::Point3d 和 cv::Vec3d 之间添加或转换
- java - 更新 ElementCollection 时会触发包含对象的 @PostUpdate 吗?
- javascript - 错误:右双引号 (") 和字段分隔符之间的数据
- javascript - 反应:有一个返回语句,但“没有从渲染返回。这通常意味着缺少返回语句”