为什么 CloudFront 提供的 S3 存储桶中只有 index.html 可用,而没有其他可用?

为什么 CloudFront 提供的 S3 存储桶中只有 index.html 可用,而没有其他可用?

我正在尝试通过 CloudFront 公开托管在 S3 中的静态站点。

S3 存储桶( testyop1) 设置为托管静态网站(非公开模式),其存储桶策略为

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity E...."
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::testyop1/*"
        }
    ]
}

网站托管配置表明这index.html是索引文档。

在 CloudFront 端,源域名设置为 ,testyop1.s3-website-eu-west-1.amazonaws.com不带任何源路径。该名称取自 S3 网络托管配置(不带http://)。

我可以访问https://xxxxx.cloudfront.net,以及https://xxxxx.cloudfront.net/index.html(其中 xxxxx 是 CloudFront 生成的名称)

所有其他调用均https://xxxxx.cloudfront.net失败

403 Forbidden

Code: AccessDenied
Message: Access Denied
RequestId: F...D
HostId: i...V4X7l4=

尽管.html文件存在(在根目录和子目录中)。

该错误消息是来自 S3 吗?(或 CloudFront?)

除了上述的Bucket Policy之外,还需要设置哪些具体的授权?

答案1

您不能将 Origin Access Identity 与网站托管功能相结合。OAI 仅适用于 REST。您的对象必须是可公开访问的,才能使用 CloudFront 后面的网站终端节点,因为网站端点不支持身份验证

相关内容