【问题标题】:Terraform Update an existing Lambda function Environmental Variable that was created in the earlierTerraform 更新之前创建的现有 Lambda 函数环境变量
【发布时间】:2020-10-19 06:48:06
【问题描述】:

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

我想保留 ARN,我只想在创建环境变量后更新它。在我的情况下,我必须设置 API Gateway 配置来获取 URL,然后将该 URL 添加为环境变量。因此,我需要 lambda 来设置部署,并且我需要 URL 以返回到集成的 Lambda 函数。

Lambda->API Gateway->(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"

我希望 Terraform 足够聪明,能够意识到它已经创建了那个 Lambda 函数,并且由于 Hash 没有改变,它只会确定什么是 不同并更新该变量。

非常感谢

【问题讨论】:

  • 如果 lambda 被 API Gateway 调用,您可以从 API Gateway 集成中获取 URL。如果是代理集成,则 lambda 接收包含 URL 的 Host 标头,如果是自定义集成,则可以从 $context.domainName 中获取。这样,您不需要通过环境变量传递它。您还可以获取 API Gateway 的自定义域并传递独立于 API Gateway 部署的静态域名。我知道这些不是您问题的完全解决方案,这就是为什么它们是评论。

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


【解决方案1】:

首先,您不会更新 lambda 函数 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 中的主机(API-Gateway)链接,我认为您需要从 event.json Event->headers->host 值中处理或提取它,而不是从 ENV 变量中。检查this link的event.json文件。

谢谢

阿什

【讨论】:

    猜你喜欢
    • 2021-11-09
    • 1970-01-01
    • 2022-07-04
    • 2019-03-04
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    相关资源
    最近更新 更多