gpt4 book ai didi

terraform 资源 s3 上传文件未更新

转载 作者:行者123 更新时间:2023-12-03 18:31:39 26 4
gpt4 key购买 nike

我正在使用 terraform 将包含内容的文件上传到 s3。但是,当内容更改时,我也需要更新 s3 文件。但是由于状态文件存储了 s3 上传已完成,因此它不会上传新文件。

resource "local_file" "timestamp" {
filename = "timestamp"
content = "${timestamp()}"
}


resource "aws_s3_bucket_object" "upload" {
bucket = "bucket"
key = "date"
source = "timestamp"
}




预期的:

检测到 aws_s3_bucket_object 更改
aws_s3_bucket_object.timestamp 正在创建...

结果:

aws_s3_bucket_object 正在刷新状态...

最佳答案

当您为 Terraform 提供文件路径而不是要上传的直接内容时,决定资源是否需要更新的是文件名,而不是文件的内容。

对于示例中所示的一小段数据,最简单的解决方案是直接在资源配置中指定数据:

resource "aws_s3_bucket_object" "upload" {
bucket = "bucket"
key = "date"
content = "${timestamp()}"
}

如果您的文件实际上太大而无法合理加载到字符串变量中,或者如果它包含无法加载到字符串中的原始二进制数据,您可以设置 etag对象的 MD5 哈希值,以便提供者可以看到内容何时发生更改:
resource "aws_s3_bucket_object" "upload" {
bucket = "bucket"
key = "date"
source = "${path.module}/timestamp"
etag = "${filemd5("${path.module}/timestamp")}"
}

通过设置 etag ,对文件内容的任何更改都将导致此哈希结果更改,从而允许提供程序检测到需要更新对象。

关于terraform 资源 s3 上传文件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com