Hospedagem estática no Amazon S3 - Configuração DNS


117

Estou trabalhando em um pequeno webapp (todo do lado do cliente) e quero hospedá-lo no Amazon S3. Encontrei vários guias sobre isso e consegui criar um bucket (com o mesmo nome do meu domínio), configurá-lo como um site e fazer upload de algum conteúdo.

Onde estou tendo dificuldades, e onde toda a documentação começa a ficar um pouco vaga, é como configurar corretamente meu DNS.

Tudo o que meu registrador ( 123-reg ) poderia sugerir foi o encaminhamento pela web, o que me deu mydomain.com.s3.amazonaws.com

O que devo configurar e onde (por exemplo, 123-reg / Amazon) posso obter um URL limpo?


Desde que esta pergunta foi feita, as coisas mudaram. Agora é possível hospedar seu site em S # com um domínio raiz, consulte para obter instruções
pors

Respostas:


248

Parece que você já fez a maior parte do trabalho. Para maior clareza, repassarei essas etapas apenas para ter certeza de que você está configurado corretamente:

  1. Crie um intervalo s3 usando seu nome de domínio como o nome do intervalo (o nome do intervalo deve ser www.example.com se você quiser que seu site seja example.com ou www.example.com)

  2. Faça upload do seu conteúdo para o balde s3. Escolha um nome consistente para os arquivos de índice do seu site (geralmente index.html). Você também pode fazer upload de uma página personalizada para erros 404 Not Found. Chame isso de 404.html. Conceda permissões de leitura a todos os arquivos do seu site para que o público possa visualizá-los. Não dê nenhuma permissão extra para o intervalo, apenas os arquivos dentro dele.

  3. Configure seu balde como um site. Com o console da AWS ( https://console.aws.amazon.com/s3/ ), você pode selecionar seu bucket, clicar em propriedades e selecionar a guia "Site". Clique em ativado e defina o seu documento de índice como "index.html" e o seu documento de erro como "404.html". Você também precisará definir seu intervalo com permissões de acesso para permitir o acesso pela web ( http://docs.amazonwebservices.com/AmazonS3/latest/dev/WebsiteAccessPermissionsReqd.html )

  4. Anote o URL "Endpoint" na guia de configuração do site. É aqui que vive o seu site. Você pode abrir o link em uma nova janela e deverá ver o seu site exatamente como ele será. Clique ao redor e verifique se tudo funciona conforme o esperado.

Você DEVE usar o endereço do terminal em todas as etapas abaixo. O www.example.com.s3.amazonaws.com normal não funcionará - você precisa usar a versão regional ( http://www.example.com.s3-website-us-east-1.amazonaws.com/ )

Agora, podemos configurar o DNS para fornecer um URL limpo e personalizado.

Primeiro, mapearemos www.example.com para seu site.

Usando as ferramentas do seu provedor de DNS, (123-reg no seu caso) você precisa criar um registro CNAME para mapear www.example.com para www.example.com.s3-website-us-east-1.amazonaws.com

O CNAME é a única coisa de que você precisa se quiser apenas www.example.com. A maioria das pessoas também deseja que "example.com" funcione, por isso precisamos de outra etapa.

example.com é frequentemente referido como um domínio simples ou o registro apex do domínio. Isso é um problema porque não pode ser um CNAME. CNAMEs funcionam apenas em subdomínios como "www." Isso torna mais difícil apontar para s3.

A abordagem usual é usar um serviço para redirecionar automaticamente qualquer solicitação indo para example.com para apontar para www.example.com. Isso irá coletar seu registro CNAME e seu site será servido a partir de s3.

O redirecionamento automático não é possível com o DNS simples e antigo, portanto, você precisa usar outro serviço. Alguns provedores de DNS oferecem este serviço junto com seu DNS (godaddy oferece, amazon route53 não. Não tenho certeza sobre 123-reg)

Se o seu provedor de DNS não fizer isso, existem alguns serviços gratuitos. Um que usei é http://wwwizer.com/naked-domain-redirect - não requer nenhum registro ou pagamento.

Para usar este tipo de serviço, você precisa criar um registro DNS "A" para seu domínio sem www. Para o serviço wwwizer.com, você precisaria criar um registro A para apontar example.com para 174.129.25.170. Isso é tudo!

Portanto, com essa configuração, se um usuário digitar example.com em seu navegador, acontecerá o seguinte:

  1. Consulta DNS: example.com -> 174.129.25.170 (serviço de wwwizer.com)
  2. Solicitação HTTP para 174.129.25.170 para example.com
  3. 174.129.25.170 redireciona example.com -> www.example.com
  4. Consulta DNS: www.example.com -> CNAME para www.example.com.s3-website-us-east-1.amazonaws.com
  5. Consulta DNS: www.example.com.s3-website-us-east-1.amazonaws.com -> aponta para Amazon S3
  6. A solicitação HTTP para www.example.com agora é atendida pelo Amazon S3

Aproveitar!


2
Muito obrigado pela clareza de tudo isso! Fiz as mudanças, só esperando que ele propague, dedos cruzados tudo vai funcionar.
Merlin Mason

hmmm, ainda não parece estar funcionando. Aqui está uma captura de tela da configuração DNS - cl.ly/CP6U O ponto no final parece suspeito, eu não adicionei isso lá, e colocar essa URL em um navegador com o ponto no final me dá um erro não encontrado no balde. Tentei removê-lo, mas ele volta assim que salvo e tentei substituí-lo por um /, mas recebo um erro inválido. Você acha que isso pode ser um problema no final dos 123-regs?
Merlin Mason

Olá, Merlin, tentei pesquisar o seu nome de domínio (wpfill.me) e não vejo nenhum dos registros na sua captura de tela. O 123-reg tem uma etapa separada de "publicação" ou "confirmação"? Parece que sua configuração não entrou em vigor.
secretmike de

Hmmm, acho que deve haver um problema com o 123-reg, tentei zerar os registros de DNS e esperei 48 horas para que ele se propagasse e ainda sem alegria. Em seguida, mudei a hospedagem DNS para Cloudflare e coloquei tudo pronto e funcionando em 20 minutos :) Obrigado pela ajuda, realmente aprecio isso!
Merlin Mason


1

Acredito que você deve selecionar todos os documentos em seu intervalo, clicar com o botão direito e escolher "Tornar público". Você também deve fazer isso sempre que algo mudar no balde. Em seguida, geralmente clico com o botão direito do mouse no intervalo, escolho as propriedades, escolho as permissões no painel direito e, em seguida, adiciono "Todos como" beneficiados "e dou a eles apenas permissões de" lista ". O resto do seu artigo é excelente. A parte sobre o domínio sem www ajudou me resolver meus problemas. Você também pode redirecionar o domínio sem www para o domínio www dentro do S3 em "Hospedagem de sites estáticos". É provavelmente a maneira mais fácil. Obrigado novamente por toda a sua ajuda.

Tim


3
Esta etapa manual é desnecessária se você aplicar uma política de intervalo conforme descrito acima.
tooluser

1

Atualização 2019

A partir de hoje, a seguinte configuração de DNS funcionou para que o site estático do AWS S3 funcionasse:

Configuração de DNS para mapeamento de intervalo


0

Na tela DNS avançado do painel de controle do 123-reg

  • Comecei clicando no botão "Redefinir DNS" para as configurações padrão de 123-reg.

Isso me deu o seguinte;

DNS EntryType       PriorityTTLDestination/Target
*                 A                                 81.xx.xx.xx              
@               A                                 81.xx.xx.xx              
@               MX          10               xx0.123-reg.co.uk
@               MX          20               xx1.123-reg.co.uk

  • Eu então adicionei esta entrada

www          CNAME                    www.example.com.s3-website-us-east-1.amazonaws.com

Do pdf do guia Gerenciar DNS , diz que o "registro @" se refere a "seu domínio em sua forma mais pura, sem subdomínio", ou seja, o domínio simples stackoverflow.com

Mas não menciona o que é o "* registro", presumi que seria para capturar todos os subdomínios e pensei que poderia substituir o registro CNAME, mas não parece ser o caso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.