用于在Amazon S3和CloudFront上更新资产的工作流程

时间:2015-09-14 19:34:43

标签: amazon-web-services amazon-s3 gruntjs

我正在尝试构建一个工作流来更新S3存储桶上的文件,并在Cloudfront上使它们无效,以便从缓存中删除它。

这些文件包括JS,CSS,图像,媒体等。我正在使用grunt来缩小它们。

这是我认为的理想情况:

  1. 在最新的代码库上运行grunt以准备分发;
  2. 使用aws客户端工具将新文件从步骤1上传到S3;
  3. 使用aws客户端工具在Cloudfront上使这些新文件无效。
  4. 我面临的问题是,在第1步中,缩小的文件都有比S3更新的时间戳,所以当我运行aws s3 sync时,它会尝试上传所有的文件回到S3。我只想上传修改后的文件。

    我也欢迎提出改变整个工作流程的建议。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

s3cmd能够通过仅上传已修改的文件来解决问题。它不检查时间戳更改,而是检查内容更改(在内部将MD5哈希值分配给每个文件,然后使用S3中存在的文件检查文件的本地版本,仅上载那些MD5哈希值不匹配的文件)

它有many command line options,包括使来自CloudFront分配的上传文件无效的选项