【发布时间】: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