Estou tentando fazer algo que deve ser relativamente direto - quero 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 o redirecionamento do caminho raiz - que me fornece um arquivo XML que descreve parcialmente o bucket S3.
fundo
S3
O S3 permite configurar um bucket de redirecionamento total , como:
Testando isso, o terminal da Web (brass9-com.s3-website-us-west-1.amazonaws.com) faz o que deveria - ele redireciona para brass9.com. Boa.
Cloudfront
O Cloudfront permite que você aponte para um bucket do S3, mas a maneira que ele sugere isso é errado - em vez de apontar para o bucket pelo nome, como brass9-com.s3.amazonaws.com, você precisa usar o Web Endpoint acima. Fora isso, você pode deixar tudo como padrão e obter um bom comportamento de redirecionamento. Portanto, um caminho como www.brass9.com/portfolio redireciona corretamente para onde deveria. Também é bom.
O problema - o redirecionamento de domínio raiz
A única coisa que deixa de funcionar é redirecionar do site www.brass9.com . Em vez de obter um redirecionamento, você obtém esse 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>
ESTÁ BEM... . Portanto, isso não é completamente inesperado - porque não há Objeto Raiz Padrão. Mas qual objeto raiz padrão eu especificaria para impedir esse comportamento? Qual é o nome do objeto de redirecionamento S3, se houver, para o qual eu preciso apontar? Ou existe alguma outra configuração adequada ou isso é apenas um bug na interação do Cloudfront e S3 que a Amazon precisa corrigir?
Solução que não funciona: 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 é redirecionado para /index.html no site principal, que é um 404 (não usamos um arquivo index.html, é um site orientado por estrutura do servidor). Eu poderia colocar um index.html no servidor, mas isso anula o pequeno ganho de velocidade do uso do 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 que você apenas sirva o site inteiro nos domínios bare e www . Isso estraga os favoritos de qualquer usuário, sua classificação de pesquisa, etc. Você não deve fazer isso.
Vários discutem a hospedagem de um site estático no S3 e Cloudfront, em vez de um esquema de redirecionamento e, portanto, não são relacionados.
Então, como faço isso corretamente?
Captura de tela da configuração do Cloudfront - nenhum objeto raiz padrão, apontando para a origem do S3. Ignore o InProgress - acabei de ativar e desativar o objeto raiz padrão para testar.
E a configuração de origem para essa distribuição:
fonte
GET /
antes de corrigir sua configuração para usar o ponto de extremidade da Web.Respostas:
Se você tiver esse problema, verifique primeiro quando configurar a origem do bucket s3 para o cloudfront, o preenchimento automático retornará o domínio do terminal REST s3.amazonaws.com, que retornará essa resposta ListBucketResult.
Você deve anotar manualmente o endpoint do site domain.s3-website-region.amazonaws.com
Importante: Se você configurou incorretamente o cloudfront com o terminal REST, precisará invalidar o cache por meio de Invalidações ou ele continuará retornando a resposta REST
fonte
origin
bloco da distribuição, useaws_s3_bucket.BUCKET.website_endpoint
nodomain_name
(notbucket_regional_name
) e adicione ocustom_origin_config
bloco.Solução: configure o redirecionamento conforme indicado na pergunta e aguarde o tempo de cache do S3 e do CloudFront. Eles podem durar 4 horas ou mais, então você só precisa configurar tudo e esperar o melhor.
(Esta é a solução de Michael nos Comentários, mas já faz anos e isso realmente merece ser marcada como Respondida).
fonte
Escrevendo como resposta, já que não posso comentar - na documentação em http://docs.aws.amazon.com/AmazonCloudFront/latest/APIReference/DistributionConfigDatatype.html#DistributionConfigDatatype_Elements , parece que você pode ter um objeto raiz padrão em branco:
fonte