Amazon s3 为同一Cloudfront发行版的不同来源配置不同的错误页
我们创建了一个cloudfront发行版,它有2个来源(1个s3来源和1个自定义来源)。我们希望来自自定义源的错误(5xx/4xx)不经修改就到达客户端/用户,但是来自s3的错误页面将由cloudfront错误页面配置提供服务。这可能吗?目前Cloudfront不支持不同来源的不同自定义错误页-如果任一来源返回错误,Cloudfront将提供相同的错误页 您可以使用自定义源代码的错误响应 您需要将源响应触发器与与与您的源关联的行为相关联 CloudFront从源站收到响应后触发源站响应: 通过这种方式,您可以添加头、发出重定向、动态生成响应或更改HTTP状态代码 根据您的用例,您可能必须为这两个来源进行自定义 另请参见。我通过将S3存储桶切换为静态网站,将其用作CloudFront自定义源站(即无源站访问标识),解决了(并…最终放弃了我的解决方案)此问题。我使用了一个Amazon s3 为同一Cloudfront发行版的不同来源配置不同的错误页,amazon-s3,amazon-cloudfront,Amazon S3,Amazon Cloudfront,我们创建了一个cloudfront发行版,它有2个来源(1个s3来源和1个自定义来源)。我们希望来自自定义源的错误(5xx/4xx)不经修改就到达客户端/用户,但是来自s3的错误页面将由cloudfront错误页面配置提供服务。这可能吗?目前Cloudfront不支持不同来源的不同自定义错误页-如果任一来源返回错误,Cloudfront将提供相同的错误页 您可以使用自定义源代码的错误响应 您需要将源响应触发器与与与您的源关联的行为相关联 CloudFront从源站收到响应后触发源站响应: 通过
aws:Referer
bucket策略,将访问权限限制为仅通过CloudFront发送的请求
注意AReferer
头通常包含请求的URL。在这个场景中,您只是用一个在CloudFront和S3之间共享的唯一的秘密令牌覆盖它
这在“使用网站端点作为原点,访问受限于Referer头”下进行了描述
我最终使用了一个随机UUID作为令牌,并在CloudFront源配置中设置了它。
使用相同的UUID,我最终得到了一个桶策略,如:
{
“Id”:“保单1603604021476”,
“版本”:“2012-10-17”,
“声明”:[
{
“Sid”:“STMT1604014855”,
“委托人”:“*”,
“效果”:“允许”,
“行动”:[
“s3:GetObject”
],
“资源”:“arn:aws:s3:::示例/*”,
“条件”:{
“StringEquals”:{
“aws:参考文件”:“b4355bde-9c68-4410-83cf-058540d83491”
}
}
},
{
“Sid”:“STMT1604014855”,
“委托人”:“*”,
“效果”:“允许”,
“行动”:[
“s3:ListBucket”
],
“资源”:“arn:aws:s3:::示例”,
“条件”:{
“StringEquals”:{
“aws:参考文件”:“b4355bde-9c68-4410-83cf-058540d83491”
}
}
}
]
}
要使404正常工作,需要使用s3:ListBucket
策略。如果没有,您将得到标准的S3AccessDenied错误页面
现在,我的每个S3源代码都可以有不同的错误页面行为,这些行为是在S3端配置的(而不是在CloudFront中)
跟进我不推荐这种方法,原因如下: