如何在不破坏存储桶内容或重新创建存储桶的情况下将文件上传到现有的s3存储桶(从terraform基础结构创建)。
terraform {
backend "s3" {
bucket = "terraformtests"
key = "terraformstate.tf"
region = "us-east-1"
}
}
resource "aws_s3_bucket_object" "terraformtests" {
bucket = "terraformtests"
key = "test/prod/1000/keys"
source = "deploy"
etag = "${md5(file("keys"))}"
}
这就是我所拥有的。它在第一次运行时运行良好,并将其上传到键空间“ 1000”。当我对其进行编辑并以1001重新运行时,该脚本将尝试销毁test / prod / 1000 / keys中先前创建的文件。我要做的就是
答案 0 :(得分:0)
您得到的结果是Terraform预期的结果。
TF在 .tfstate 文件中维护基础结构的“状态”。它们是上次同步基础架构时的镜像。
.tf 文件中描述了所需的基础结构状态。
运行terraform plan
或terraform apply
命令比较 .tf 和 .tfstate 文件。然后, .tfstate 中存在的而不是 .tf 中没有的所有资源都会被破坏。
在您的情况下,它在上一次运行的 .tfstate 中具有 keyspace 1000 ,但在 .tf 中却没有,因为您已对其进行了编辑到 1001 。
另外,我注意到您有
source = "deploy"
etag = "${md5(file("keys"))}"
通常,它们应该引用相同的文件:
source = "readme.md"
etag = "${filemd5("readme.md")}"