【发布时间】:2021-08-08 13:52:32
【问题描述】:
我有一个使用 terraform 创建的 AWS Lambda 函数。代码更改是从我们的 CI 服务器自动部署的,并且 commit-sha 作为环境变量传递 (GIT_COMMIT_HASH) - 所以这会改变 Terraform 范围之外的 Lambda 函数(因为人们在问。 ..).
到目前为止效果很好。但是现在我想更新函数的 node-version 并且 terraform 尝试将 env var 重置为 "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"],
]
}
}
这可能吗?如何引用变量?
** 编辑 **
计划输出如下所示:
# 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"
}
}
【问题讨论】:
-
“无法让 terraform 忽略其他地方所做的更改” - 你是什么意思?有什么错误吗?
-
@Marcin CI 服务器将 lambda 的 env var 更新为当前的 git sha,但我的 terraform 脚本不知道这一点,因此它想将其更改回
"unknown"。我希望 tf 脚本忽略此更改并仅从 12->14 更新节点版本 -
计划输出是什么样的?
-
@ydaetskcoR 添加了输出
-
忽略
environment.0.variables(最后没有变量名)适用于所有环境变量,但我只想忽略GIT_COMMIT_HASH...到目前为止还没有运气
标签: terraform terraform-provider-aws terraform0.12+