pro*_*wla 6 amazon-s3 amazon-web-services terraform
我有一个现有的 S3 存储桶,我希望向其中添加“文件夹”和生命周期规则。
(我说“文件夹”是因为这是它们在客户端的表示方式,因为它们是通过 Storage Gateway 访问的。)
我可以创建文件夹,例如用于保存季度备份,例如:
resource "aws_s3_bucket_object" "quarterly" {
bucket = "${var.bucket_id}"
acl = "private"
key = "quarterly"
source = "/dev/null"
}
Run Code Online (Sandbox Code Playgroud)
但是如果我尝试然后添加生命周期规则,如下
resource "aws_s3_bucket" "quarterly" {
bucket = "${var.bucket_id}"
acl = "private"
lifecycle_rule {
id = "quarterly_retention"
prefix = "quarterly/"
enabled = true
tags {
"rule" = "quarterly"
}
expiration {
days = 92
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我执行 terraform apply 时出现错误。
* aws_s3_bucket.quarterly: Error creating S3 bucket: BucketAlreadyOwnedByYou: Your previous request to create the named bucket succeeded and you already own it.
status code: 409, request id: 702396A7D2FA28BA, host id: IJDA+vszRBYl4zmvW56dSnC2va2qpQXlfgeEL7X1QQHHv8eEaYKvSUCL0ZIj/VsdvQ2hkBLGjAY=
Run Code Online (Sandbox Code Playgroud)
我想先创建存储桶,然后再添加文件夹和生命周期规则,而不是在创建时嵌入生命周期规则。
我错过了什么,我弄错了吗?
谢谢你的帮助!
首先创建存储桶并逐步更新配置应该可以正常工作,最终结果是,如果您通过其他方式删除存储桶,Terraform 将使用所有规则重新创建它。
看起来您丢失了terraform.tfstate文件,因此 Terraform 不知道它已经创建了您的存储桶,或者您首先在 Terraform 外部创建了存储桶,因此它尝试创建它但失败了。Terraform 需要“拥有”存储桶才能更新其配置,即生命周期规则。
您应该能够使用类似的内容将现有存储桶导入到状态文件中
terraform import aws_s3_bucket.quarterly <your bucket ID>
Run Code Online (Sandbox Code Playgroud)
请参阅https://www.terraform.io/docs/providers/aws/r/s3_bucket.html的底部
运行 Terraform 后应该会显示它刚刚更新了生命周期规则。
| 归档时间: |
|
| 查看次数: |
3450 次 |
| 最近记录: |