gpt4 book ai didi

lambda - Terraform:为调用 Lambda 的 AWS API Gateway 创建 url 路径参数?

转载 作者:行者123 更新时间:2023-12-05 01:20:55 25 4
gpt4 key购买 nike

我正在编写 Terraform 来部署具有 AWS Lambda 集成的 AWS API 网关。我想在我可以从 lambda 引用的 url 中指定一个可选的路径参数。我不知道如何在 AWS API Gateway terraform 中指定它。

我能找到的关于路径变量的唯一信息是这个 SO 帖子:In Terraform, how do you specify an API Gateway endpoint with a variable in the request path?

在其中,答案指定了 aws_api_gateway_integration 函数的 uri 字段中的路径变量:

resource "aws_api_gateway_integration" "get-account-integration" {
rest_api_id = "${var.gateway_id}"
resource_id = "${var.resource_id}"
http_method = "${aws_api_gateway_method.get-account.http_method}"
type = "HTTP"
integration_http_method = "GET"
uri = "/integration/accounts/{id}" # <--
passthrough_behavior = "WHEN_NO_MATCH"

request_parameters {
"integration.request.path.id" = "method.request.path.accountId"
}
}

不幸的是,AWS Lambda 集成使用该 uri 字段作为 lambda 的 ARN。以下是我在集成中引用 lambda 的方式:
resource "aws_api_gateway_integration" "books_lambda" {
rest_api_id = "${var.gateway.id}"
resource_id = "${var.resource_id}"
http_method = "${aws_api_gateway_method.books.http_method}"
type = "AWS_PROXY"
integration_http_method = "POST"
uri = "${var.books_invoke_arn}" # <--
credentials = "${aws_iam_role.books_gateway.arn}"

request_parameters {
"integration.request.path.id" = "method.request.path.bookId"
}
}

因为arn在uri字段的位置,不知道path参数的位置在哪里定义。

我尝试将路径变量附加到 uri 字段( ${var.books_invoke_arn}/{bookId} ),但它只会产生错误。当uri字段被lambda arn占用时,我在哪里可以指定路径变量?

其次,是否可以将该变量设为可选,或者我是否必须拥有第二组 terraform(一个有变量,一个没有)?

谢谢!

最佳答案

这是一个老问题,但它出现在我的一次搜索中。我认为在此期间情况可能发生了变化,但目前可以通过在 route_key 中的花括号中指定变量来实现这一点。就像我们代码中的这个例子一样:

resource "aws_apigatewayv2_route" "room-recommendations-ng" {
api_id = aws_apigatewayv2_api.this.id
route_key = "GET /rooms/{room}/recommendations"
target = "integrations/${aws_apigatewayv2_integration.room-recommendations.id}"
}

关于lambda - Terraform:为调用 Lambda 的 AWS API Gateway 创建 url 路径参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56588500/

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