0

I am trying to make one of my AWS Rest API private. But after doing steps that AWS docs suggest, It's changing URL of that API.

Here's the steps that I tried:

  • Create VPC endpoint for API execution.
  • Change APIs endpoint type to Private
  • Add VPC endpoint id in VPC endpoint IDs.
  • Add resource policy to allow API execution from VPC.

Here's the Resource policy

    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "my api arn"
        },
        {
            "Effect": "Deny",
            "Principal": "*",
            "Action": "execute-api:Invoke",
            "Resource": "My API ARN",
            "Condition": {
                "StringNotEquals": {
                    "aws:SourceVpce": "VPC endpoint id",
                    "aws:SourceVpc": "VPC id"
                }
            }
        }
    ]
}```

These steps is making my API private/Invokable from VPC only, but I can't invoke that with same URL.
I must have to add VPC endpoint id in URL to call the API.

Old URL that I am using:
https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}

Here's how new URL looks like:
https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

Is there any way to make API private without changing URL?

0 Answers0