web-dev-qa-db-ja.com

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 Webホスティング設定(http://なし)から取得されました。

https://xxxxx.cloudfront.nethttps://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?)

上記のバケットポリシー以外にどのような特定の承認を設定する必要がありますか?

2
WoJ

Origin AccessIdentityをWebサイトホスティング機能と組み合わせることはできません。 OAIはRESTのみです。CloudFrontの背後にあるウェブサイトエンドポイントを使用するには、オブジェクトがパブリックにアクセス可能である必要があります。 ウェブサイトエンドポイントは認証をサポートしていません

3