【问题标题】:terraform, lambda. how to ensure zipfile is always createdterraform,拉姆达。如何确保始终创建 zipfile
【发布时间】:2019-12-04 21:00:53
【问题描述】:

我们有几个开发人员,每个人都通过 terraform 将 lambda 函数(从他们自己的计算机)部署到一个共享帐户。为了保持一致性,Terraform 状态文件位于 S3 存储桶中。由于我们是从不同的计算机进行部署,因此函数 zipfile 可能在本地不存在。如何确保始终创建函数 zip?

我在 terraform 模块中使用以下代码

resource "null_resource" "zipfile" {
  depends_on = [null_resource.code_dependencies]
  provisioner "local-exec" {
    command = "cd ${var.source_dir} && zip -r function.zip * -x *.zip"
  }
}

resource "aws_lambda_function" "function" {
  depends_on = [null_resource.zipfile]
  filename         = "${var.source_dir}/function.zip"
  function_name    = var.function_name
  role             = aws_iam_role.lambda_function_role.arn
  handler          = var.handler
  source_code_hash = filesha256("${var.source_dir}/function.zip")
  runtime = var.runtime
}

【问题讨论】:

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


【解决方案1】:

一种方法是使用 null_resource 的 triggers 参数。设置唯一值(例如时间戳)将每次触发命令。缺点是即使源没有变化也会运行。

resource "null_resource" "zipfile" {
  provisioner "local-exec" {
     command = "cd ${var.source_dir} && zip -r ${local.filename} * -x *.zip"
  }

  triggers = {
     always_run = "${timestamp()}"
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2016-05-06
    • 2017-08-28
    • 2013-01-29
    相关资源
    最近更新 更多