html – 自定义错误文件的AWS CloudFront问题:AccessDenied消息

前端之家收集整理的这篇文章主要介绍了html – 自定义错误文件的AWS CloudFront问题:AccessDenied消息前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这是我在Stackoverflow中的第一篇文章,我试图搜索我目前正在使用CloudFront提供静态S3网站页面的问题的答案,准确地说,是自定义404错误页面.希望你能帮助我:=))

我没有使用任何代码,仅使用AWS控制台作为POC.这是场景:

a)我创建了两个桶.名称(例如):mybucket.com和www.mybucket.com.

b)我已将我的静态网站(一个非常简单的网站)放在mybucket.com内,并将www.mybucket.com重定向到它.

c)内容桶(mybucket.com)有一个index.html文件,一个图像文件.我在存储桶下创建了一个文件夹(称为错误),并在其中放置了一个名为404error.html的自定义错误消息文件.

d)index.html文件调用一个简单的JavaScript代码,该代码从另一个存储桶(resource.mybucket.com)加载另一个文件(welcome.html)的内容.我确保为CORS启用了存储桶,它正在运行.

d)存储桶具有存储桶策略,允许每个人访问存储桶及其内容.桶状态如下所示:

{
    "Id": "Policy1402570669260","Statement": [
        {
            "Sid": "Stmt1402570667997","Action": [
                "s3:GetObject"
            ],"Effect": "Allow","Resource": "arn:aws:s3:::mybucket.com/*","Principal": {
                "AWS": [
                    "*"
                ]
            }
        }
    ]
}

e)我确保www.mybucket.com和resource.mybucket.com也有相同的政策.

f)mybucket.com已配置为静态网站托管,mybucket.com的错误文件已配置为error / 404error.html.

c)如果我使用S3 URL(mybucket.com.s3-website-.amazonaws.com)访问该站点,并尝试访问不存在的文件(比如myfile.html),它会正确显示自定义404错误页面.

当我尝试使用CloudFront分配访问页面时出现问题.我在S3存储桶(mybucket.com)上创建了一个CloudFront分配,这里是我设置的属性

a)错误页面

i)HTTP错误代码404-未找到

ii)错误缓存TTL:300

iii)自定义错误响应:是

iv)响应页面路径:/error/404error.html

v)HTTP响应代码:好的

b)还设置了单独的缓存行为:

i)路径模式:/错误/ *

ii)限制查看者访问:否

我保持它非常简单和标准.我不转发cookie或查询字符串或使用任何签名的URL等.

创建分发后,当我尝试使用CloudFront URL访问该站点时,主页面正常工作.但是,如果我尝试使用不存在的页面进行测试,则不会使用我配置的自定义404错误页面.相反,我在浏览器中获得以下XML文件(Chrome / FireFox -latest):

当我尝试从浏览器检查元素时,控制台中没有显示任何线索.

现在我知道这个AccessDenied错误已经报告过并且之前已经讨论过了,我已经尝试了大多数建议:提供对存储桶的完全访问权限.我确保了(从上面的存储桶政策中可以看出,任何人都可以访问).我还试图确保Origin Access ID已获得GetObject权限.我还删除并重新创建了CloudFront分发版,并删除/重新上传文件夹中的错误文件夹和404error.html文件.可以从CloudFront URL手动访问错误文件

http://xxxxxxxx.cloudfront.net/error/404error.html

但是,如果我尝试访问任意不存在的文件,它就不起作用:

http://xxxxxxxx.cloudfront.net/myfile.html

这里有什么我想念的吗?

我非常感谢你的帮助.

问候

最佳答案
如果您快速设置存储桶(存储桶),则可以将其设置为没有每个人的列表权限.这将阻止CloudFront确定资产是否正确404.

您的上传工具可能正在上传并具有每个对象的读取权限 – 因此您不会注意到这种权限的缺失.

因此,如果您请求< URL> /non-existent.html,CloudFront会尝试读取存储分区,例如http://the-bucket.s3.amazonaws.com/non-existent.html

>如果向所有人授予列表权限,则返回404,并且CloudFront可以将请求重新映射为200或自定义404
>如果未向所有人授予列表权限,则返回403,并且CloudFront将403返回给最终用户(这是您在日志中看到的).

这很有道理,但很混乱!

原文链接:https://www.f2er.com/html/426514.html

猜你在找的HTML相关文章