Copy to S3
aws s3 cp build/index.html s3://mybucket/index.html
To copy multiple HTML files:
aws s3 cp build/ s3://mybucket/ --exclude '*' --include '*.html'
The reason --exclude comes before --include is because all files are included by default.
If you want to have multiple includes:
aws s3 cp build/ s3://mybucket/ --exclude '*' --include '*.html' --include '*.js'
There’s also the --recursive option to match files in subdirectories.
The next step is to invalidate the files from the CloudFront edge caches.
Invalidate CloudFront
To invalidate a single file:
aws cloudfront create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths '/index.html'
To invalidate multiple HTML files using the * wildcard:
aws cloudfront create-invalidation --distribution-id $CDN_DISTRIBUTION_ID --paths '/*'
When using the * wildcard character, make sure to wrap the path with quotes (' or ") or else shell expansion will occur.