如何显示S3中托管的静态网站的先前版本

时间:2019-10-25 23:46:49

标签: amazon-web-services amazon-s3

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

1 个答案:

答案 0 :(得分:1)

通过向请求中添加文件的特定版本(例如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原始数据的所有请求中。