首页 > 解决方案 > 如何显示托管在 S3 中的静态网站的先前版本

问题描述

我目前已将静态网站的第 1 版和第 2 版上传到启用了版本控制的 S3 存储桶中。默认情况下,访问者访问 S3 url 时会显示其网站的第 2 版。有没有办法以编程方式或通过控制台将其设置为显示版本 1?

标签: amazon-web-servicesamazon-s3

解决方案


您可以通过在请求中添加版本来访问 S3 中文件的特定版本,例如http://example.cloudfront.net/image.png?verisonId=[id].

您还需要设置一个存储桶策略,允许您的 CloudFront 分配访问版本化对象:

{
 "Version":"2012-10-17",
 "Id": "CloudFrontAccessToVersionedObjects",
 "Statement": [{
      "Action": ["s3:GetObject", "s3:GetObjectVersion" ],
      "Effect": "Allow",
      "Principal":{"CanonicalUser":"<CLOUDFRONT CANONICAL ID>"},
      "Resource": "<BUCKET>",
      "Sid": "CloudFrontAccess"
 }]}

应用存储桶策略后,您需要使缓存无效。

附带说明一下,假设您总是想使用特定版本,那么无需对现有代码进行任何更改即可实现此功能的快速方法是使用查看器请求 Lambda@Edge 重写请求,然后再将其传递给您的 S3 来源,将 附加versionId=[id]到 S3 来源的所有请求。


推荐阅读