HTTP API Gateway trailing slash
Asked Answered
G

0

7

I have an HTTP API Gateway which has a custom domain with mappings like https://api.example.com/myapi and one route POST / which triggers Lambda.

Problem is that https://api.example.com/myapi throws {"message": "Not Found"} and it working only with trailing slash https://api.example.com/myapi/.

How can I make it so it works with and without slash or in the worst case just without slash?

Here is CloudFormation for reference:

{
    "Resources": {
        "Webhoook6917ABA8": {
            "Type": "AWS::Lambda::Function",
            "Properties": {...}
        },
        "DomainNameEC95A6E9": {
            "Type": "AWS::ApiGatewayV2::DomainName",
            "Properties": {
                "DomainName": "api.example.com",
                "DomainNameConfigurations": [
                    {
                        "CertificateArn": "arn:***",
                        "EndpointType": "REGIONAL"
                    }
                ]
            }
        },
        "ApiA2E3A7D3": {
            "Type": "AWS::ApiGatewayV2::Api",
            "Properties": {
                "Name": "Api",
                "ProtocolType": "HTTP"
            }
        },
        "ApiDefaultStageE05BC5D1": {
            "Type": "AWS::ApiGatewayV2::Stage",
            "Properties": {
                "ApiId": {
                    "Ref": "ApiA2E3A7D3"
                },
                "StageName": "$default",
                "AutoDeploy": true
            },
            "DependsOn": [
                "DomainNameEC95A6E9"
            ]
        },
        "ApiDefaultStageDomainName710CA621": {
            "Type": "AWS::ApiGatewayV2::ApiMapping",
            "Properties": {
                "ApiId": {
                    "Ref": "ApiA2E3A7D3"
                },
                "DomainName": {
                    "Ref": "DomainNameEC95A6E9"
                },
                "Stage": "$default",
                "ApiMappingKey": "myapi"
            },
            "DependsOn": [
                "DomainNameEC95A6E9",
                "ApiDefaultStageE05BC5D1"
            ]
        },
        "ApiPOSTHttpIntegrationcc27d9637eb8fbf5d8b41e5d3f4f4743D2E9B97B": {
            "Type": "AWS::ApiGatewayV2::Integration",
            "Properties": {
                "ApiId": {
                    "Ref": "ApiA2E3A7D3"
                },
                "IntegrationType": "AWS_PROXY",
                "IntegrationUri": {
                    "Fn::GetAtt": [
                        "Webhoook6917ABA8",
                        "Arn"
                    ]
                },
                "PayloadFormatVersion": "2.0"
            }
        },
        "ApiPOSTE756F840": {
            "Type": "AWS::ApiGatewayV2::Route",
            "Properties": {
                "ApiId": {
                    "Ref": "ApiA2E3A7D3"
                },
                "RouteKey": "POST /",
                "AuthorizationType": "NONE",
                "Target": {
                    "Fn::Join": [
                        "",
                        [
                            "integrations/",
                            {
                                "Ref": "ApiPOSTHttpIntegrationcc27d9637eb8fbf5d8b41e5d3f4f4743D2E9B97B"
                            }
                        ]
                    ]
                }
            }
        }
    }
}

Gid answered 22/12, 2021 at 12:40 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.