gpt4 book ai didi

amazon-web-services - 使用 Terraform 将 AWS API Gateway 方法与多个 Lambda 集成

转载 作者:行者123 更新时间:2023-12-05 05:47:41 24 4
gpt4 key购买 nike

我必须用相关的 api 网关方法集成 50 多个 Lambda 函数。因此,我使用 Lambda 函数名称和 api 网关资源路径创建了一个 terraform map ,如下所示。

variable "lambdas" {
description = "Map of Lambda function names and API gateway resource paths."
type = map
default = {
user = {
name = "user-lambda-function"
path = "user"
},
products= {
name = "products-lambda-function"
path = "products"
},
orders= {
name = "orders-lambda-function"
path = "orders"
},

然后我使用 for_each 通过此映射迭代创建 lambda 函数,如下所示。

resource "aws_lambda_function" "lambda_functions" {
for_each = var.lambdas
filename = "lambda_function_code.zip"
function_name = each.value.name
role = data.aws_iam_role.lambda_execution_role.arn
handler = "index.handler"
source_code_hash = filebase64sha256("lambda_function_code.zip")

runtime = "nodejs14.x"
}

之后我开始创建 API 网关、资源和方法,如下所示,

resource "aws_api_gateway_rest_api" "api_gateway" {
name = var.api-gateway-name
}

resource "aws_api_gateway_resource" "resources" {
for_each = var.lambdas
rest_api_id = aws_api_gateway_rest_api.api_gateway.id
parent_id = aws_api_gateway_rest_api.api_gateway.root_resource_id
path_part = each.value.path
}

resource "aws_api_gateway_method" "methods" {
for_each = aws_api_gateway_resource.resources
rest_api_id = aws_api_gateway_rest_api.api_gateway.id
resource_id = each.value.id
http_method = "POST"
authorization = "NONE"
api_key_required = false
}

然后我尝试通过迭代上述方法将上述 API 网关方法与相关的 Lambda 函数集成。但是这里我必须输入相关的 lambda 函数调用 uri。

resource "aws_api_gateway_integration" "integration" {
for_each = aws_api_gateway_method.methods
rest_api_id = each.value.rest_api_id
resource_id = each.value.resource_id
http_method = each.value.http_method
integration_http_method = "POST"
type = "AWS_PROXY"
uri = ""
}

我正在努力输入这个相关的 lambda 函数 uri 以与相关方法集成。

我的问题是,如何通过此迭代获取相关的 lambda 函数 uri 以在此处输入?或者无需对每个 lambda、资源和方法进行编码即可实现此目的的任何解决方案。

最佳答案

aws_lambda_functioninvoke_arn 是:

ARN to be used for invoking Lambda Function from API Gateway - to be used in aws_api_gateway_integration's uri

因此,您必须在 aws_api_gateway_integration 中使用它。

关于amazon-web-services - 使用 Terraform 将 AWS API Gateway 方法与多个 Lambda 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70949492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com