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.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?)
上記のバケットポリシー以外にどのような特定の承認を設定する必要がありますか?
Origin AccessIdentityをWebサイトホスティング機能と組み合わせることはできません。 OAIはRESTのみです。CloudFrontの背後にあるウェブサイトエンドポイントを使用するには、オブジェクトがパブリックにアクセス可能である必要があります。 ウェブサイトエンドポイントは認証をサポートしていません 。