从 API Gateway 获取 terraform 中 AWS lambda 的终端节点



我有一个 lambda 部署到 AWS,集成lambda-proxy,现在我有一个 API 网关,它为我提供了一个调用 lambda 的终端节点。我需要在地形配置中获取此终结点 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部署或管理的。

我有一个略有不同但相似的设置。

我使用:
-Terraform来预置 AWS API Gateway Custom Domain-Serverless Framework
,以将 Lambdas 部署并链接到上面创建的 API GW URL。

我从Terraform导出了API GW URL作为输出变量。并且,在函数部署期间将其作为环境变量传递给无服务器框架

这是如何行动的。

1/main.tf负责导出 API GW 网址

output "tf_output_aws_apigw_domain_name__domain_name"
{
value = "${aws_api_gateway_domain_name.tf_aws_apigw_domain_for_apis.domain_name}"
}

2/serverless.yml负责将 Lambda 函数链接到此 API GW URL

[...]
customDomain:
domainName: ${env:APIGW_DOMAIN_NAME}
basePath: /myapi
stage: dev
createRoute53Record: true
[...]

以下是将它们粘合在一起的命令(在我的自动化管道中(。

第一部分负责读取地形的输出变量值(即之前创建的 API GW URL(,并将自身设置为环境变量APIGW_DOMAIN_NAME。

后面的部分初始化负责将lambda函数映射到APIGW URL的无服务器域管理器插件,并部署无服务器设置。

terraform init ...
terraform refresh ...
export APIGW_DOMAIN_NAME=`terraform output tf_output_aws_apigw_domain_name__domain_name`
sls plugin install -n serverless-domain-manager
sls deploy --debug

干杯,
公羊

相关内容

  • 没有找到相关文章

最新更新