如何使 Terraform archive_file 资源获取对源文件的更改?

Posted

技术标签:

【中文标题】如何使 Terraform archive_file 资源获取对源文件的更改?【英文标题】:How to make Terraform archive_file resource pick up changes to source files? 【发布时间】:2017-01-02 12:52:28 【问题描述】:

在 Win 10 机器上使用 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。

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

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

【问题讨论】:

【参考方案1】:

您可能会看到一个错误。我在 0.7.7 上,现在的问题是 SHA 更改,即使您不进行更改。 Hashicorp 将在 0.7.8 中将此资源更新为数据源

https://github.com/hashicorp/terraform/pull/8492

【讨论】:

是的 - 我尝试在邮件列表上发布它,但没有回复。无论如何,还有其他问题。特别是围绕 x 平台创建存档、zip 排序、路径分隔符等。我认为 TF 不是复杂 lambda 基础架构的正确解决方案。

以上是关于如何使 Terraform archive_file 资源获取对源文件的更改?的主要内容,如果未能解决你的问题,请参考以下文章

在 terraform 中将 2 个 python 文件添加到 lambda_zip [重复]

如何使 Azure 备份与 Terraform 一起使用?

如何使用 Terraform 使 AWS CloudFront Distribution 缓存失效?

如何使 Terraform 提供程序依赖于正在创建的资源

使 Terraform 资源键多行

使 terraform 仅使用本地插件的规范方法