Amazon Cloudfront com redirecionamento S3

7

Estou tentando fazer algo que deve ser relativamente simples. Desejo configurar alguns domínios e subdomínios para redirecionar para o domínio principal do nosso site, mas quero colocar os redirecionamentos no Cloudfront. Tudo funciona, exceto redirecionando o caminho da raiz - que me pega um arquivo XML descrevendo parcialmente o intervalo do S3.

Antecedentes

S3

O S3 permite que você configure um bucket de redirecionamento total , como:

Testandoisso,oendpointdaweb(brass9-com.s3-website-us-west-1.amazonaws.com)fazoquedeve-eleredirecionaparabrass9.com.Bom.

Cloudfront

CloudfrontpermitequevocêaponteparaumbucketS3,masamaneiracomoelesugereissoéerrado-emvezdeapontarparaointervalopelonome,comobrass9-com.s3.amazonaws.com, você precisa usar o Web Endpoint acima. Além disso, você pode deixar tudo em seus padrões e obter um bom comportamento de redirecionamento. Assim, um caminho como www.brass9.com/portfolio redireciona corretamente para onde deveria. Bom também.

O problema - o redirecionamento do domínio raiz

A única coisa que então não funciona é redirecionar da planície www.brass9.com . Em vez de obter um redirecionamento, você recebe um resultado estranho:

<?xml version="1.0" encoding="UTF-8"?>
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Name>brass9-com</Name><Prefix></Prefix>
<Marker></Marker><MaxKeys>1000</MaxKeys><IsTruncated>false</IsTruncated>
</ListBucketResult>

OK ... Então isso não é totalmente inesperado - porque não há um padrão Objeto Raiz. Mas qual objeto raiz padrão eu especificaria para evitar esse comportamento? Qual é o nome do objeto de redirecionamento do S3, se houver, para o qual preciso apontar? Ou há alguma outra configuração adequada, ou isso é apenas um bug de como o Cloudfront e o S3 interagem que a Amazon precisa corrigir?

Solução não operacional conhecida: objeto raiz padrão

É possível especificar um Objeto Raiz Padrão de index.html, mas isso não ajuda em nada - apenas altera o problema. Em vez disso, o URL do Cloudfront redireciona para /index.html no site principal, que é um 404 (não usamos um arquivo index.html, ele é um site orientado por framework do lado do servidor). Eu poderia colocar um index.html no servidor, mas isso acaba com o pequeno ganho de velocidade de usar o Cloudfront.

Perguntas semelhantes

Uma pergunta faz algo semelhante, mas recebe uma resposta em branco de 0 byte por algum motivo, em vez do que estou vendo, uma resposta XML. Não inclui uma pergunta sobre esse problema ou uma resolução.

Artigos relacionados

Um artigo propõe apenas atende todo o site tanto no domínio nu quanto no www . Isso atrapalha os favoritos de qualquer usuário, sua classificação de pesquisa, etc, etc. Você não deve fazer isso.

Vários debatem hospedagem de um site estático no S3 e Cloudfront em vez de um esquema de redirecionamento e, portanto, não estão relacionados.

Então, como faço isso corretamente?

Captura de tela do Cloudfront Configuration - sem objeto raiz padrão, apontando para a origem do S3. Ignore o InProgress - Eu acabei de ativar e desativar o Objeto Raiz Padrão para testar.

Eaconfiguraçãodeorigemparaessadistribuição:

    
por Chris Moschini 08.07.2014 / 04:23

3 respostas

1

Solução: configure o redirecionamento conforme indicado na pergunta e espere os tempos de cache do S3 e do CloudFront. Eles podem ser de 4 horas ou mais, então você só precisa configurar tudo e esperar pelo melhor.

(Esta é a solução de Michael dos Comentários, mas agora faz anos e isso realmente merecia ser marcado como Respondido).

    
por 23.06.2016 / 01:37
1

Se você tiver esse problema, verifique primeiro ao configurar a origem do bucket s3 para o cloudfront, o autocomplete retorna o endpoint s3 REST domain.amazonaws.com que retorna essa resposta ListBucketResult.

Você precisa anotar manualmente o domínio endpoint domain.s3-website-region.amazonaws.com

Importante: Se você configurou incorretamente o cloudfront com o ponto de extremidade REST, será necessário invalidar o cache por meio de Invalidations ou ele continuará retornando a resposta REST

    
por 06.03.2018 / 15:46
0

Escrevendo como resposta, pois não posso comentar - da documentação em link parece que você pode ter um objeto raiz padrão em branco:

If you don't want to specify a default root object when you create a distribution, include an empty DefaultRootObject element.

    
por 08.07.2014 / 07:47