【问题标题】:terraform does not detect changes to lambda source filesterraform 未检测到对 lambda 源文件的更改
【发布时间】:2019-01-21 13:59:55
【问题描述】:

在我的main.tf 我有以下内容:

data "template_file" "lambda_script_temp_file" {
  template = "${file("../../../fn/lambda_script.py")}"
}

data "template_file" "library_temp_file" {
  template = "${file("../../../library.py")}"
}

data "template_file" "init_temp_file" {
  template = "${file("../../../__init__.py")}"
}

data "archive_file" "lambda_resources_zip" {
  type        = "zip"
  output_path = "${path.module}/lambda_resources.zip"

  source {
    content   = "${data.template_file.lambda_script_temp_file.rendered}"
    filename  = "lambda_script.py"
  }

  source {
    content   = "${data.template_file.library_temp_file.rendered}"
    filename  = "library.py"
  }

  source {
    content   = "${data.template_file.init_temp_file.rendered}"
    filename  = "__init__.py"
  }
}

resource "aws_lambda_function" "MyLambdaFunction" {
  filename          = "${data.archive_file.lambda_resources_zip.output_path}"
  function_name     = "awesome_lambda"
  role              = "${var.my_role_arn}"
  handler           = "lambda_script.lambda_handler"
  runtime           = "python3.6"
  timeout           = "300"
}

问题是当我在新的terraform apply 上修改其中一个源文件(例如lambda_script.py)时,即使存档文件(lambda_resources_zip)得到更新,lambda 函数的脚本也没有得到更新(没有上传新的存档文件)。

我知道为了避免这种情况,我可以先运行terraform destroy,但这不是我的用例的选项。

*我使用的是 Terraform v0.11.10

【问题讨论】:

  • 您能确认您使用的是哪个版本的 Terraform 吗?

标签: amazon-web-services aws-lambda terraform aws-glue


【解决方案1】:

我通过在资源定义中添加以下行解决了这个问题:

source_code_hash  = "${data.archive_file.lambda_resources_zip.output_base64sha256}"

当源文件被修改时,哈希值会发生变化并触发源文件被更新。

【讨论】:

    猜你喜欢
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 2020-11-25
    • 2017-01-02
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多