我在使用 Terraform 时遇到这样的问题: 我需要创建存档(我使用 data.archive_file 和 output_path = ./archive/s3/my_test_archive.zip),然后我想将存档上传到 aws 存储桶(使用 aws_s3_object)。 要检查我使用的哈希值
etag = filemd5("${data.archive_file.my_archive.output_path}")
但是当我运行
terraform apply
时出现错误
on module\main.tf line 20, in resource "aws_s3_object" "object": : etag = filemd5("${data.archive_file.my_archive.output_path}") ├──────────────── │ while calling filemd5(path) │ data.archive_file.my_archive.output_path is "./archive/s3/my_test_archive.zip" │ Call to function "filemd5" failed: open archive/s3/my_test_archive.zip: The > system cannot find the file specified..```
我猜这是因为 Terraform 在检查代码的同时文件不存在。
如果我禁用 etag 检查,这将起作用,但我需要检查存档中的更改。 我该如何解决?
要纠正此问题,不要在
filemd5()
属性上使用 output_path
函数,而是使用 output_md5
属性,如下所示:
data "archive_file" "my_file" {
# ...
}
resource "aws_s3_object" "my_object" {
# ...
etag = data.archive_file.my_file.output_md5
# ...
}