删除s3

问题描述 投票:0回答:1

我有一个简单的Terraform代码,我在S3

中管理应用程序的版本代码 我想在S3中管理此代码的多个版本。 我的代码如下:

main.tf resource "aws_s3_bucket" "caam_test_bucket" { bucket = "caam-test-bucket" versioning { enabled = true } } resource "aws_s3_bucket_object" "caam_test_bucket_obj" { bucket = aws_s3_bucket.caam_test_bucket.id key = "${var.env}/v-${var.current_version}/app.zip" source = "app.zip" }

每次更新代码,我将其导出到

app.zip
,增加变量
current_version

并推动Terraform代码。

这里的问题是,它没有将多个版本文件夹保留在S3存储桶中,而是删除了现有的文件夹并创建另一个版本。
我希望Terraform保留创建的任何路径和文件,并且不删除它。
对于例如,如果一条路径已经存在,并且我将当前版本增加到2.0并推动代码,我希望Terraform保留
dev/v-1.0/app.zip

并将

dev/v-1.0/app.zip

添加到桶中。

有办法做到这一点吗?

TF删除您的对象,因为这就是它的方式
works

国家存在,但不再存在配置中。

一种克服这一点的方法是通过
amazon-web-services amazon-s3 terraform
1个回答
1
投票
保留配置中的所有对象。这样,您将不断将新版本添加到现有对象的地图中,然后继续替换它们。如果您要保留所有版本,这可能是有问题的。

非常简单的方法是使用局部 - exec,它将使用AWS CLI上传对象。这发生在tf的“外部”,因此TF将不会删除tf预先存在的对象,因为TF不会意识到它们。

对于@marcin指出的任何寻求本地-EXEC解决方案的人,您可以使用类似的东西:

for_each

注意,每当Terraform检测`var.current_version`variable.

	

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.