Por que apenas index.html está disponível em um bucket do S3 servido pelo CloudFront e nada mais?

1

Estou tentando expor um site estático hospedado no S3 por meio do CloudFront.

O bucket S3 ( testyop1 ) está definido para hospedar sites estáticos (não no modo público) e sua política de buckets é

{
    "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/*"
        }
    ]
}

A configuração de hospedagem do site informa que index.html é o documento de índice.

No lado do CloudFront , o nome de domínio de origem é definido como testyop1.s3-website-eu-west-1.amazonaws.com sem nenhum caminho de origem. O nome foi retirado da configuração de hospedagem na Web do S3 (sem o http:// ).

Eu posso acessar https://xxxxx.cloudfront.net , bem como https://xxxxx.cloudfront.net/index.html (onde xxxxx é o nome gerado pelo CloudFront)

Todas as outras chamadas para https://xxxxx.cloudfront.net falham com

403 Forbidden

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

apesar dos arquivos .html estarem presentes (tanto no diretório raiz quanto em um subdiretório).

Essa mensagem de erro vem do S3? (ou CloudFront?)

Quais autorizações específicas além da Política de balde acima devem ser definidas?

    
por WoJ 30.11.2017 / 16:32

1 resposta

3

Você não pode combinar uma Identidade de acesso do Origin com o recurso de hospedagem do site. OAI é apenas para REST. Seus objetos precisam estar acessíveis publicamente para usar o ponto de extremidade do site por trás do CloudFront, porque endpoints do site don ' t suporte à autenticação .

    
por 30.11.2017 / 19:50