serverless-aws-function-url-custom-domain
Automatically creates AWS CloudFront distribution and Route 53 records to AWS Lambda with Function URL (no api gateway).
Installation
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.
# add in your serverless.ymlplugins: - serverless-aws-function-url-custom-domaincustom: 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 integrationfunctions: api: handler: wsgi_handler.handler url: true # activate function URL!
Deploy
serverless deploy
Inspect Result
serverless info --verbose
Output:CloudFront domain name xxxxx.cloudfront.net (CNAME: ${env:SUBDOMAIN}.yourdomain.com)
IAM Policy
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.