【发布时间】:2019-09-14 05:10:00
【问题描述】:
如何在不破坏存储桶内容或重新创建存储桶的情况下将文件上传到现有 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 中创建的文件。我要做的就是
- 导入现有表状态而不重新创建它
- 将文件夹添加到键空间,而不触及表的先前内容。
【问题讨论】:
-
您可能没有正确使用 terraform。 Terraform 配置语言是声明性的。它描述了您的基础设施应该处于的状态。它维护所有已创建对象的状态并删除那些不再描述的对象(例如 /test/prod/1000/keys 中的文件)。我建议使用其他方式将文件移动到 s3 存储桶。最简单的是 bash 脚本恕我直言。
标签: amazon-web-services amazon-s3 terraform terraform-provider-aws