使用 terraform 时 filemd5 文件路径出错

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

我在使用 Terraform 时遇到这样的问题: 我需要创建存档(我使用 data.archive_fileoutput_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 检查,这将起作用,但我需要检查存档中的更改。 我该如何解决?

amazon-web-services terraform terraform-provider-aws
1个回答
0
投票

要纠正此问题,不要在

filemd5()
属性上使用
output_path
函数,而是使用
output_md5
属性,如下所示:

data "archive_file" "my_file" {
  # ...
}

resource "aws_s3_object" "my_object" {
  # ...
  etag = data.archive_file.my_file.output_md5
  # ...
}
© www.soinside.com 2019 - 2024. All rights reserved.