Serverless AWS Lambda URL custom domain configuration via cloudfront distribution and route 53.
npm install serverless-aws-function-url-custom-domain




Automatically creates AWS CloudFront distribution and Route 53 records to AWS Lambda with Function URL (no api gateway).
bash
npm install --save-dev serverless-aws-function-url-custom-domain
`Configuration
This plugin assumes your domain is hosted and managed with AWS Route53. SSL certificate is managed via certificate manager.`yaml
add in your serverless.yml
plugins:
- serverless-aws-function-url-custom-domain
custom:
urlDomain:
domains:
- ${env:SUBDOMAIN}.yourdomain.com # custom domain 1
- ${env:SUBDOMAIN}-alt.yourdomain.com # custom domain 2
hostedZoneName: yourdomain.com. # your domain Route 53 hosted zone name
certificateArn: 'arn:aws:acm:us-east-1:xxxxx:certificate/xxxxx' # need to be located at NVirgina
route53: false # disable route 53 integration
functions:
api:
handler: wsgi_handler.handler
url: true # activate function URL!
`$3
`javascript
serverless deploy
`$3
`javascript
serverless info --verbose
``bash
Output:
CloudFront domain name
xxxxx.cloudfront.net (CNAME: ${env:SUBDOMAIN}.yourdomain.com)
`$3
In order to make this plugin work as expected a few additional IAM Policies might be needed on your AWS profile.
More specifically this plugin needs the following policies attached:
*
cloudfront:CreateDistribution
* cloudfront:GetDistribution
* cloudfront:UpdateDistribution
* cloudfront:DeleteDistribution
* cloudfront:TagResource
* route53:ListHostedZones
* route53:ChangeResourceRecordSets
* route53:GetHostedZone
* route53:ListResourceRecordSets
* acm:ListCertificates`You can read more about IAM profiles and policies in the Serverless documentation.