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收效甚微。谢谢!
答案 0 :(得分:1)
解决此问题的最佳方法是将存储桶导入到地形状态,而不是将其用作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
,就会添加生命周期规则。
答案 1 :(得分:0)
“数据”用于获取信息和对象本身,以便稍后在代码中使用。 您无法使用数据更改任何内容,因为它是“只读”模式。
尝试一下:
const ground = new Ground();
const mover = new Mover(ground);
ground.draw(); // "a"
ground.section.changeI();
ground.draw(); // "b"
console.log( mover.dojob() ); // "bX"
ground.section.changeI();
console.log( mover.dojob() ); // "cX"
如果上述操作由于某种原因不起作用,您可以随时“地形导入”现有存储桶,将其添加到tfstate并可以随意修改。