【发布时间】:2020-04-21 23:03:49
【问题描述】:
我有一个部署到 AWS 的 lambda,集成是 lambda-proxy,现在我有一个 API 网关,它为我提供了一个用于调用 lambda 的端点。我需要在 terraform 配置中获取此端点 URL,我该怎么做?
数据源不公开任何 URL
data "aws_lambda_function" "myfunction" {
function_name = "my-function-name"
}
data "aws_api_gateway_rest_api" "my_rest_api" {
name = "my-rest-api"
}
api_gateway_deployment 确实暴露了一个invoke_url,但不幸的是它无法导入,否则我可以声明资源然后使用terraform import ...
resource "aws_api_gateway_rest_api" "my_rest_api" {
name = "my-rest-api"
tags = {
STAGE = "prod"
}
}
resource "aws_api_gateway_deployment" "my_rest_api" {
rest_api_id = aws_api_gateway_rest_api.my_rest_api.id
stage_name = "prod"
}
编辑:澄清一下,lambda 不是由 terraform 部署或管理的。
【问题讨论】:
-
您绝对可以使用
invoke_url导出的属性来满足您的需要。我不确定为什么你需要将它与import一起使用,除非你正在做一些非常不寻常的事情。请分享您需要端点的代码,我们可以向您展示如何操作。 -
@MattSchuchard 亚马逊 lambda 根本不由 terraform 管理,这就是我需要导入或数据源的原因。
-
我在尝试使用 AWS SAM 模板部署应用程序时遇到了这个问题。 SAM 负责创建 API 网关,我想在 Terraform 中管理的 CloudFront 配置中引用它。我最终决定在我的 SAM 模板中配置一个自定义域,并在我的 CloudFront 配置中明确引用它。它没有提供我想要的关卡资源检查,但它似乎有效。
标签: amazon-web-services aws-lambda terraform terraform-provider-aws