I'm using Serverless Framework to deploy functions in AWS Lambda, but I can't find where/how I can remove the stage specifier from the URL endpoints created. The documentation does not seem to cover this part.
For example, this is my serverless.yml
(with irrelevant parts omitted):
service: cd-mock
provider:
name: aws
runtime: python3.6
region: eu-west-1
package:
include:
- handler.py
functions:
index:
handler: handler.index
events:
- http:
path: /
method: get
After a serverless deploy
, the following service information is returned:
service: cd-mock
stage: dev
region: eu-west-1
stack: cd-mock-dev
api keys:
None
endpoints:
GET - https://ab1cd2ef3g.execute-api.eu-west-1.amazonaws.com/dev/
functions:
index: cd-mock-dev-index
Notice the /dev
part in the URL endpoint, and also in the function. That dev
is the default value for the stage
parameter in the configuration file.
Specifying stage: something
in the serverless.yml
file will have that /something
as suffix in the URL, and as part of the function.
Question: how can I remove the stage specification from the generated URL endpoints, or: how can I prevent that stage specification to become part of the generated URLs?
(That the stage is part of the function, is fine. That will be easy to separate staging
and production
functions in the AWS Lambda dashboard.)
One thing you can do is use a custom domain that you own (e.g. mycompany.com
) and map that to your API Gateway. This way, rather than making a request to https://ab1cd2ef3g.execute-api.eu-west-1.amazonaws.com/dev/
, you would make a request to https://api.mycompany.com/
.
There's a plugin called serverless-domain-manager
that makes it much easier to set up this custom domains. Check out this blog post for a full walkthrough on how to use it.