Tracked
- NPM Downloads Last Month
- 3173
- Issues
- 0
- Stars
- 0
- Forks
- 0
- Watchers
- 0
Automatically creates properly configured AWS CloudFront distribution that routes traffic to API Gateway.
Due to limitations of API Gateway Custom Domains, we realized that setting self-managed CloudFront distribution is much more powerful.
:zap: Pros
$ npm install --save-dev serverless-api-cloudfront
# add in your serverless.yml
plugins:
- serverless-api-cloudfront
custom:
apiCloudFront:
domain: my-custom-domain.com
certificate: arn:aws:acm:us-east-1:000000000000:certificate/00000000-1111-2222-3333-444444444444
waf: 00000000-0000-0000-0000-000000000000
compress: true
logging:
bucket: my-bucket.s3.amazonaws.com
prefix: my-prefix
cookies: none
headers:
- x-api-key
querystring:
- page
- per_page
priceClass: PriceClass_100
minimumProtocolVersion: TLSv1
domain
can be list, so if you want to add more domains, instead string you list multiple ones:domain:
- my-custom-domain.com
- secondary-custom-domain.com
cookies
can be all (default), none or a list that lists the cookies to whitelist ``` cookies: headers
can be all, none (default) or a list of headers (see CloudFront custom behaviour):headers: all
querystring
can be all (default), none or a list, in which case all querystring parameters are forwarded, but cache is based on the list:querystring: all
priceClass
can be PriceClass_All
(default), PriceClass_100
or PriceClass_200
:priceClass: PriceClass_All
minimumProtocolVersion
can be TLSv1
(default), TLSv1_2016
, TLSv1.1_2016
, TLSv1.2_2018
or SSLv3
:minimumProtocolVersion: TLSv1
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
You can read more about IAM profiles and policies in the Serverless documentation.
The CloudFormation template is invalid: Template format error: Unresolved resource dependencies [ApiGatewayRestApi] in the Resources block of the template