Deploying CloudFront with CloudFormation
TL;DR: don’t forget about the default cache policy
I was trying to deploy a CloudFront distribution with CloudFormation. I wanted to follow best practices, so I was trying
to use a cache policy rather than embedding the cache configuration inline with the ForwardedValues field.
I had my cache behaviours defined:
Resources:
Distribution:
Type: AWS::CloudFront::Distribution
Properties:
# ...
CacheBehaviors:
- CachePolicyId: !Ref CachePolicy
CachePolicy:
Type: AWS::CloudFormation::CachePolicy
Properties:
# ...
I was deploying and getting the error “The parameter ForwardedValues is required”. I was bashing my head against this,
trying to use {} or !Ref AWS::NoValue but that didn’t fix things.
I wanted to follow best practices, and defining a cache policy is more powerful.
Finally my googling uncovered the answer:
…I had forgotten to include the CachePolicyId field in by DefaultCachePolicy!
One more quick thing - as a brit, I slipped up on typing Behaviours (extra “u”) all the time. Thanks to cfn-lint and
the CloudFormation tools for helping me catch that early!