Я хочу создать ресурс отдыха API-шлюза в терраформе по следующему шаблону:
/v1/foo/{foo}
Однако, когда я пытаюсь запустить следующую терраформу, я получаю эту ошибку.
│ Ошибка: создание ресурса шлюза API: BadRequestException: Часть пути ресурса допускает только a-zA-Z0-9._-: или допустимый жадный путь переменные и фигурные скобки в начале и в конце.
data "aws_lambda_function" "function" {
function_name = module.configuration_lambda.function_name
}
data "aws_api_gateway_rest_api" "api" {
name = var.api_name
}
data "aws_api_gateway_resource" "parent" {
path = "/v1"
rest_api_id = data.aws_api_gateway_rest_api.api.id
}
resource "aws_lambda_permission" "lambda_invocation" {
action = "lambda:InvokeFunction"
function_name = data.aws_lambda_function.function.function_name
principal = "apigateway.amazonaws.com"
source_arn = "${data.aws_api_gateway_rest_api.api.execution_arn}/*"
}
resource "aws_api_gateway_resource" "current" {
parent_id = data.aws_api_gateway_resource.parent.id
path_part = "/foo/{foo}"
rest_api_id = data.aws_api_gateway_rest_api.api.id
}
resource "aws_api_gateway_integration" "lambda" {
http_method = "GET"
resource_id = aws_api_gateway_resource.current.id
rest_api_id = data.aws_api_gateway_rest_api.api.id
integration_http_method = "POST"
type = "AWS_PROXY"
uri = data.aws_lambda_function.function.invoke_arn
}
resource "aws_api_gateway_method" "method" {
authorization = "NONE"
http_method = "GET"
resource_id = aws_api_gateway_resource.current.id
rest_api_id = data.aws_api_gateway_rest_api.api.id
}
Любые идеи, что я могу делать неправильно?
Я думаю, вам нужно это:
resource "aws_api_gateway_resource" "current" {
parent_id = data.aws_api_gateway_resource.parent.id
path_part = "foo"
rest_api_id = data.aws_api_gateway_rest_api.api.id
}
resource "aws_api_gateway_resource" "current_foo" {
parent_id = aws_api_gateway_resource.current.id
path_part = "{foo}"
rest_api_id = data.aws_api_gateway_rest_api.api.id
}