如何使 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 [重复]