在 Amazon S3 和 CloudFront 上更新资产的工作流程
Workflow for updating assets on Amazon S3 and CloudFront
我正在尝试构建一个工作流来更新 S3 存储桶上的文件并使它们在 Cloudfront 上失效,以便将其从缓存中删除。
这些文件由 JS、CSS、图像、媒体等组成。我正在使用 g运行t 来缩小它们。
这就是我认为的理想情况:
- 运行 g运行t 在最新的代码库上准备分发;
- 使用 aws 客户端工具将步骤 1 中的新文件上传到 S3;
- 使用 aws 客户端工具使 Cloudfront 上的这些新文件无效。
我面临的问题是,在第 1 步中,缩小文件的时间戳都比 S3 上的更新,所以当我 运行 aws s3 sync 时,它会尝试上传所有文件返回到 S3。我只想上传修改后的文件
我也乐于接受有关更改整个工作流程的建议。有什么建议吗?
s3cmd 可以解决只上传修改过的文件的问题。它不是检查时间戳更改,而是检查内容更改(在内部它为每个文件分配 MD5 哈希,然后检查文件的本地版本与 S3 中存在的版本,仅上传 MD5 哈希不匹配的文件)
它有many command line options包括使从 CloudFront 分发上传的文件无效的选项
我正在尝试构建一个工作流来更新 S3 存储桶上的文件并使它们在 Cloudfront 上失效,以便将其从缓存中删除。
这些文件由 JS、CSS、图像、媒体等组成。我正在使用 g运行t 来缩小它们。
这就是我认为的理想情况:
- 运行 g运行t 在最新的代码库上准备分发;
- 使用 aws 客户端工具将步骤 1 中的新文件上传到 S3;
- 使用 aws 客户端工具使 Cloudfront 上的这些新文件无效。
我面临的问题是,在第 1 步中,缩小文件的时间戳都比 S3 上的更新,所以当我 运行 aws s3 sync 时,它会尝试上传所有文件返回到 S3。我只想上传修改后的文件
我也乐于接受有关更改整个工作流程的建议。有什么建议吗?
s3cmd 可以解决只上传修改过的文件的问题。它不是检查时间戳更改,而是检查内容更改(在内部它为每个文件分配 MD5 哈希,然后检查文件的本地版本与 S3 中存在的版本,仅上传 MD5 哈希不匹配的文件)
它有many command line options包括使从 CloudFront 分发上传的文件无效的选项