如何使Terraform archive_file资源拾取源文件的更改



在win10机器上使用TF 0.7.2

我正在尝试使用TF 0.7.1中引入的新"archive_file"资源,在AWS中为lambda函数的开发设置一个编辑/上传周期

我的配置是这样的:

resource "archive_file" "cloudwatch-sumo-lambda-archive" {
  source_file = "${var.lambda_src_dir}/cloudwatch/cloudwatchSumologic.js"
  output_path = "${var.lambda_gen_dir}/cloudwatchSumologic.zip"
  type = "zip"
}
resource "aws_lambda_function" "cloudwatch-sumo-lambda" {
  function_name = "cloudwatch-sumo-lambda"
  description = "managed by source project"
  filename = "${archive_file.cloudwatch-sumo-lambda-archive.output_path}"
  source_code_hash = "${archive_file.cloudwatch-sumo-lambda-archive.output_sha}"
  handler = "cloudwatchSumologic.handler"
  ...
}

这在我第一次运行它时有效- TF创建lambda zip文件,上传它并在AWS中创建lambda。问题出现在更新lambda时。

如果我在上面的例子中编辑cloudwatchsumologics .js文件,TF似乎不知道源文件已经更改-它不会将新文件添加到zip中,也不会将新的lambda代码上传到AWS。

是我在配置中做错了什么,还是archive_file资源不应该以这种方式使用?

您可能看到一个bug。我在0.7.7,现在的问题是SHA的变化,即使你不做任何改变。Hashicorp将在0.7.8

中将此资源更新为数据源。https://github.com/hashicorp/terraform/pull/8492

您应该像这样使用base64散列:

source_code_hash = "${archive_file.cloudwatch-sumo-lambda-archive.output_base64sha256}"

最新更新