繁体   English   中英

Terraform 更新之前创建的现有 Lambda function 环境变量

[英]Terraform Update an existing Lambda function Environmental Variable that was created in the earlier

我想在同一脚本中创建Lambda function环境变量后更新它。

我想保留 ARN,我只想在创建环境变量后更新它。 在我的情况下,我必须设置 API 网关配置以获取 URL,并将 URL 添加为环境变量。 So, I need the lambda to setup the deployment, and I need the URL to go back into the integrated Lambda function.

Lambda->API 网关->(API 网关 URL)->Lambda Tada !

resource "aws_lambda_function" "lambda" {
  filename         = "${data.archive_file.zip.output_path}"
  source_code_hash = "${data.archive_file.zip.output_base64sha256}"
  function_name = "terraformLambdaWebsite"
  role          = "${aws_iam_role.role.arn}"
  handler       = "index.handler"
  runtime       = "nodejs10.x"
  tags = {
    Environment = "KeepQL"
  }
}

然后,一切都设置好后,我想更改环境变量。

aws_lambda_function.lambda.tags.Environment = "KeepQL2"

I had hoped that Terraform was Smart enough to realize that it had already created that Lambda function, and since the Hash had not changed, it would just determine what was different and update that variable.

非常感谢

首先,您没有更新 lambda function ENV 变量。 ENV 变量在下面的代码示例中 -

  resource "aws_lambda_function" "test_lambda" {
  filename      = "lambda_function_payload.zip"
  function_name = "lambda_function_name"
  role          = "${aws_iam_role.iam_for_lambda.arn}"
  handler       = "exports.test"
  source_code_hash = "${filebase64sha256("lambda_function_payload.zip")}"

  runtime = "nodejs12.x"

  environment {
    variables = {
      foo = "bar"
    }
  }
}

您正在做的是更新标签变量,而不是 ENV 变量。 虽然如果您更改 lambda 配置中的任何内容,您需要重新部署 lambda 以保持 ARN 不变。 只会更新最新版本。 所以一定要参考 lambda 的最新版本。

同样在这个流程中 Lambda->API Gateway-> (API Gateway URL)->Lambda。 lambda 一样吗? 如果您确实需要访问 lambda 中的主机(API-Gateway)链接,我认为您需要从 event.json Event->headers->host 值中处理或提取它,而不是从 ENV 变量中。 此链接检查 event.json 文件。

谢谢

阿什什

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM