Search code examples
amazon-web-servicesamazon-cloudfrontaws-cli

Update cloudfront configuration using awscli


I would like to edit/update my CloudFront distribution with awscli.

I'm using latest cli version:

aws-cli/1.11.56 Python/2.7.10 Darwin/16.4.0 botocore/1.5.19

To use cloudfront features in awscli you need to add this to your aws config file:

[preview]
cloudfront = true

I'm getting config of the distribution that I'd like to modify:

aws cloudfront get-distribution-config --id FOO_BAR_ID > cf_config.json

Looks like it worked as expected. Config looks ok for me. Now I'm trying to reconfigure my CF distribution with the same config.

aws cloudfront update-distribution --distribution-config file://cf_config.json --id FOO_BAR_ID

and I'm getting:

Parameter validation failed:
Missing required parameter in DistributionConfig: "CallerReference"
Missing required parameter in DistributionConfig: "Origins"
Missing required parameter in DistributionConfig: "DefaultCacheBehavior"
Missing required parameter in DistributionConfig: "Comment"
Missing required parameter in DistributionConfig: "Enabled"
Unknown parameter in DistributionConfig: "ETag", must be one of: CallerReference, Aliases, DefaultRootObject, Origins, DefaultCacheBehavior, CacheBehaviors, CustomErrorResponses, Comment, Logging, PriceClass, Enabled, ViewerCertificate, Restrictions, WebACLId, HttpVersion, IsIPV6Enabled
Unknown parameter in DistributionConfig: "DistributionConfig", must be one of: CallerReference, Aliases, DefaultRootObject, Origins, DefaultCacheBehavior, CacheBehaviors, CustomErrorResponses, Comment, Logging, PriceClass, Enabled, ViewerCertificate, Restrictions, WebACLId, HttpVersion, IsIPV6Enabled

What is the right way to reconfigure CF using awscli?


Solution

  • You have to edit cf_config.json before using it with update-distribution and remove

    {
        "ETag": "ETag_Value",
        "DistributionConfig":
    

    from the beginning of the file and last

    }
    

    from the end of file.

    Then use this command with the right id and ETag value that was removed from cf_config.json

    aws cloudfront update-distribution --distribution-config file://cf_config.json --id FOO_BAR_ID --if-match ETag_Value