[英]Integrate AWS API Gateway methods with multiple Lambdas using Terraform
我必須將 50 多個 Lambda 功能與相關的 api 網關方法集成。 So that I create a terraform map with Lambda function name and api gateway resource path as below.
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
通過這個 map 創建 lambda function ,如下所示。
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 function 集成。 但是這里我要輸入相關的lambda function調用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 function uri 以與相關方法集成。
我的問題是,如何獲得相關的 lambda function uri 在此迭代中輸入? 或者任何解決方案來實現這一點,而無需編寫每個 lambdas、資源和方法的代碼。
aws_lambda_function具有invoke_arn
,即:
用於從 API 網關調用 Lambda Function 的 ARN - 用於 aws_api_gateway_integration 的 uri
所以你必須在你的aws_api_gateway_integration
中使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.