我们在S3中使用了Angular2代码。我们通过Cloudfront访问它。 它工作正常。 但是在部署到Angular2之后,我们希望每个代码都能从Cloudfront中失效。 部署后清除缓存的最佳方法是什么? 如何处理云端缓存?
答案 0 :(得分:4)
您需要调用CloudFront API(或使用Web控制台)使缓存无效。 Here is the documentation
答案 1 :(得分:2)
您可以在aws-cli的帮助下完成部署和缓存失效。
#!/bin/bash
# enable cloudfront cli
aws configure set preview.cloudfront true
# deploy angular bundles
aws s3 sync $LOCAL s3://$S3_BUCKET \
--region=eu-central-1 \
--cache-control max-age=$CACHE_TIME
# invalidate cache in cloudfront
aws cloudfront create-invalidation \
--distribution-id $CLOUDFRONT_DISTRO_ID \
--paths "/*"
答案 2 :(得分:1)
请注意,这些解决方案的一个问题(正如我发现的那样)是CloudFront Invalidation可能会在CodeDeploy完成部署到所有EC2实例之前运行。
部分因素是您的部署配置,以及您拥有的EC2实例数。我正在考虑为这种获得部署状态的流程添加一些检查,并在成功后失效