| 1 | resource "aws_apigatewayv2_api" "http_api" { |
| 2 | name = "${var.function_name}-gateway" |
| 3 | protocol_type = "HTTP" |
| 4 | } |
| 5 | |
| 6 | resource "aws_lambda_permission" "allow_apigw" { |
| 7 | statement_id = "AllowExecutionFromAPIGateway" |
| 8 | action = "lambda:InvokeFunction" |
| 9 | function_name = aws_lambda_function.api.function_name |
| 10 | principal = "apigateway.amazonaws.com" |
| 11 | source_arn = "${aws_apigatewayv2_api.http_api.execution_arn}/*/*" |
| 12 | } |
| 13 | |
| 14 | resource "aws_apigatewayv2_integration" "lambda_integration" { |
| 15 | api_id = aws_apigatewayv2_api.http_api.id |
| 16 | integration_type = "AWS_PROXY" |
| 17 | integration_uri = aws_lambda_function.api.invoke_arn |
| 18 | payload_format_version = "2.0" |
| 19 | } |
| 20 | |
| 21 | resource "aws_apigatewayv2_route" "default_route" { |
| 22 | api_id = aws_apigatewayv2_api.http_api.id |
| 23 | route_key = "ANY /{proxy+}" |
| 24 | target = "integrations/${aws_apigatewayv2_integration.lambda_integration.id}" |
| 25 | } |
| 26 | |
| 27 | resource "aws_apigatewayv2_stage" "default_stage" { |
| 28 | api_id = aws_apigatewayv2_api.http_api.id |
| 29 | name = "$default" |
| 30 | auto_deploy = true |
| 31 | } |