Terraform:忽略对某个环境变量的更改

pky*_*eck 8 terraform terraform-provider-aws terraform0.12+

我有一个使用 terraform 创建的 AWS Lambda 函数。代码更改是从我们的 CI 服务器自动部署的,并且 commit-sha 作为环境变量 ( GIT_COMMIT_HASH) 传递 -因此这会更改 Terraform 范围之外的 Lambda 函数(因为人们在问...)

到目前为止效果很好。但现在我想更新函数的节点版本,并且 terraform 尝试将环境变量重置为 的初始值"unknown"

我尝试使用该ignore_changes块,但无法让 terraform 忽略其他地方所做的更改......

resource "aws_lambda_function" "test" {
  filename      = data.archive_file.helloworld.output_path
  function_name = "TestName_${var.environment}"
  role          = aws_iam_role.test.arn
  handler       = "src/index.handler"

  runtime = "nodejs14.x"
  timeout = 1
  memory_size = 128

  environment {
    variables = {
      GIT_COMMIT_HASH = "unknown"
    }
  }

  lifecycle {
    ignore_changes = [
      environment.0.variables["GIT_COMMIT_HASH"],
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?我该如何引用该变量?

** 编辑 **

计划输出如下所示:

# aws_lambda_function.test will be updated in-place
  ~ resource "aws_lambda_function" "test" {
        # ... removed some lines

        source_code_size               = 48012865
        tags                           = {}
        timeout                        = 1
        version                        = "12"

      ~ environment {
          ~ variables = {
              ~ "GIT_COMMIT_HASH" = "b7a77d0" -> "unknown"
            }
        }

        tracing_config {
            mode = "PassThrough"
        }
    }
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 4

我尝试复制这个问题,在我的测试中它完全按照预期工作。我只能怀疑您使用的是旧版本的 TF,出现此问题。已经报告了许多关于ignore_changes. 例如,这里这里这里

Terraform v0.15.3我使用with进行了测试aws v3.31.0,并且我可以确认它ignore_changes可以正常工作。由于这是 TF 内部问题,据我所知,解决该问题的唯一方法是升级TF