Configurar o encaminhamento de URL baseado em DNS no Amazon Route53 [fechado]

140

Estou tentando configurar o encaminhamento no Amazon Route53. Meu último serviço DNS (Nettica) me permitiu encaminhar solicitações para "aws.example.com" para "https://myaccount.signin.aws.amazon.com/console/".

Essa funcionalidade é suportada pelo Route53?

Como o Nettica consegue isso? Ele insere um registro A, CNAME, PTR ou TXT especial?

Saurav
fonte
Criar uma distribuição do Cloudfront com o URL como a origem também funciona. Basta apontar o domínio para a distribuição Cloudfront do Route53 e certifique-se de configurar o TLS corretamente.
Deiwin 22/09

Respostas:

325

Eu estava enfrentando exatamente o mesmo problema que Saurav descreveu, mas realmente precisava encontrar uma solução que não exigisse nada além de Route 53 e S3. Criei um guia de instruções para o meu blog detalhando o que fiz.

Aqui está o que eu criei.


Objetivo

Usando apenas as ferramentas disponíveis no Amazon S3 e Amazon Route 53, crie um redirecionamento de URL que encaminha automaticamente http://url-redirect-example.vivekmchawla.com para a página de login do AWS Console com o alias "MyAccount", localizado em https : //myaccount.signin.aws.amazon.com/console/ .

Este guia ensinará a configurar o encaminhamento de URL para qualquer URL, não apenas para a Amazon. Você aprenderá como configurar o encaminhamento para pastas específicas (como "/ console" no meu exemplo) e como alterar o protocolo do redirecionamento de HTTP para HTTPS (ou vice-versa).


Etapa 1: Crie seu balde S3

Abra o S3 Management Console e clique em "Criar bucket"

Abra o console de gerenciamento S3 e clique em "Criar bucket".


Etapa 2: Nomeie seu balde S3

Dê um nome ao seu balde S3

  1. Escolha um nome de bloco. Este passo é realmente importante! Você deve nomear o intervalo EXATAMENTE o mesmo que o URL que deseja configurar para o encaminhamento. Para este guia, usarei o nome "url-redirect-example.vivekmchawla.com".

  2. Selecione qualquer região que funcione melhor para você. Se você não souber, mantenha o padrão.

  3. Não se preocupe em configurar o log. Basta clicar no botão "Criar" quando estiver pronto.


Etapa 3: habilitar a hospedagem estática de sites e especificar regras de roteamento

Habilitar hospedagem estática de sites e especificar regras de roteamento

  1. Na janela de propriedades, abra as configurações de "Static Website Hosting".
  2. Selecione a opção "Ativar hospedagem de sites".
  3. Digite um valor para o "Documento de Índice". Este objeto (documento) nunca será veiculado pelo S3 e você nunca precisará carregá-lo. Basta usar o nome que quiser.
  4. Abra as configurações para "Editar regras de redirecionamento".
  5. Cole o seguinte fragmento XML na sua totalidade.

    <RoutingRules>
      <RoutingRule>
        <Redirect>
          <Protocol>https</Protocol>
          <HostName>myaccount.signin.aws.amazon.com</HostName>
          <ReplaceKeyPrefixWith>console/</ReplaceKeyPrefixWith>
          <HttpRedirectCode>301</HttpRedirectCode>
        </Redirect>
      </RoutingRule>
    </RoutingRules>
    

Se você estiver curioso sobre o que o XML acima está fazendo, visite a documentação do AWM para "Sintaxe para especificar regras de roteamento" . Uma técnica de bônus (não abordada aqui) é encaminhada para páginas específicas no host de destino, por exemplo http://redirect-destination.com/console/special-page.html. Leia sobre o <ReplaceKeyWith>elemento se precisar dessa funcionalidade.


Etapa 4: anote o "ponto final" do seu bucket de redirecionamento

Anote o ponto de extremidade do seu balde de redirecionamento

Anote o "ponto final" do Static Website Hosting que a Amazon criou automaticamente para este bucket. Você precisará disso para mais tarde, então destaque o URL inteiro e copie e cole-o no bloco de notas.

CUIDADO! Nesse ponto, você pode realmente clicar neste link para verificar se suas Regras de redirecionamento foram inseridas corretamente, mas tenha cuidado! Aqui está o porquê...

Digamos que você inseriu o valor errado nas <Hostname>tags em suas Regras de redirecionamento. Talvez você tenha digitado acidentalmente myaccount.amazon.com, em vez de myaccount.signin.aws.amazon.com. Se você clicar no link para testar o URL do terminal, a AWS terá o prazer de redirecionar seu navegador para o endereço errado!

Depois de perceber seu erro, você provavelmente editará as <Hostname>Regras de redirecionamento para corrigir o erro. Infelizmente, ao tentar clicar no link novamente, você provavelmente acabará sendo redirecionado para o endereço errado! Mesmo que você tenha corrigido a <Hostname>entrada, seu navegador está armazenando em cache a entrada anterior (incorreta!). Isso acontece porque estamos usando um redirecionamento HTTP 301 (permanente), que navegadores como Chrome e Firefox armazenam em cache por padrão.

Se você copiar e colar o URL do terminal em um navegador diferente (ou limpar o cache do atual), você terá outra chance de ver se sua <Hostname>entrada atualizada é finalmente a correta.

Para garantir, se você quiser testar o URL do terminal e as regras de redirecionamento, abra uma sessão de navegação privada, como "Modo de navegação anônima" no Chrome. Copie, cole e teste o URL do nó de extremidade no modo de navegação anônima e tudo o que estiver em cache desaparecerá assim que você fechar a sessão.


Etapa 5: Abra o console de gerenciamento Route53 e vá para os conjuntos de registros da sua zona hospedada (nome de domínio)

Abra o Console de Gerenciamento do Route 53 para adicionar conjuntos de registros à sua zona hospedada

  1. Selecione a Zona Hospedada (nome de domínio) que você usou quando criou seu bucket. Como nomeei meu bucket "url-redirect-example.vivekmchawla.com", selecionarei a zona hospedada de vivekmchawla.com.
  2. Clique no botão "Ir para conjuntos de registros".

Etapa 6: Clique no botão "Criar conjunto de registros"

Clique no botão Criar conjunto de registros

Clicar em "Criar conjunto de registros" abrirá a janela Criar conjunto de registros no lado direito do console de gerenciamento do Route53.


Etapa 7: Criar um conjunto de registros CNAME

Criar um conjunto de registros CNAME

  1. No campo Nome, digite a parte do nome do host da URL que você usou ao nomear seu bucket S3. A "parte do nome do host" da URL é tudo à esquerda do nome da sua zona hospedada. Chamei meu bucket S3 de "url-redirect-example.vivekmchawla.com" e minha Zona Hospedada é "vivekmchawla.com", portanto, a parte do nome do host que preciso inserir é "url-redirect-example".

  2. Selecione "CNAME - Nome canônico" para o Tipo deste conjunto de registros.

  3. Para o Valor, cole no URL do nó de extremidade do bloco S3 que criamos na Etapa 3.

  4. Clique no botão "Criar conjunto de registros". Supondo que não haja erros, agora você poderá ver um novo registro CNAME na lista de conjuntos de registros da sua zona hospedada.


Etapa 8: teste seu novo redirecionamento de URL

Abra uma nova guia do navegador e digite o URL que acabamos de configurar. Para mim, é http://url-redirect-example.vivekmchawla.com . Se tudo deu certo, você deve ser enviado diretamente para uma página de login da AWS.

Como usamos o myaccount.signin.aws.amazon.comalias como URL de destino do redirecionamento, a Amazon sabe exatamente qual conta estamos tentando acessar e nos leva diretamente para lá. Isso pode ser muito útil se você deseja fornecer um link de login da AWS curto, limpo e com marca para funcionários ou contratados.

Tudo feito!  Seu encaminhamento de URL deve levá-lo à página de login da AWS.


Conclusões

Pessoalmente, adoro os vários serviços da AWS, mas se você decidiu migrar o gerenciamento de DNS para o Amazon Route 53, a falta de encaminhamento fácil de URL pode ser frustrante. Espero que este guia tenha ajudado a facilitar a configuração do encaminhamento de URL para suas zonas hospedadas.

Se você quiser saber mais, consulte as seguintes páginas do site de documentação da AWS.

Felicidades!

Vivek M. Chawla
fonte
15
+1 por esta solução totalmente inteligente - muito obrigado por dedicar um tempo para compilar um guia passo a passo épico, atualizei minha resposta para encaminhar futuros leitores aos seus!
Steffen Opel
23
Nota :: Para aqueles que desejam redirecionamentos de domínio raiz: exemplo.org -> exemplo.com - faça o mesmo, exceto use um registro com "Alias: Sim" ativado. Em seguida, selecione o balde como destino.
JaredBroad
10
Ótima solução. Mas encontrei um problema ao usar https para o URL original. Se o intervalo que eu estou redirecionando for dev.example.com, o redirecionamento funcionará muito bem para http: // dev.example.com, mas falhará em https: // dev.example.com. Não encontrei uma solução para este problema.
22813 Greg
4
@ Greg Eu acho que isso pode ter algo a ver com a forma como a Amazon lida com HTTPS para S3. Infelizmente, ao usar um CNAME para acessar um bucket S3, você não pode forçar o SSL adicionando "https" porque a Amazon não está hospedando um certificado para "* .example.com". Como o S3 não permite a conexão, nunca chegamos à lógica de redirecionamento. Infelizmente, não consigo ver uma solução alternativa para isso.
Vivek M. Chawla
17
Há uma nova opção "Redirecionar todas as solicitações para outro nome de host" nas opções do bucker. Coloquei lá o URL do sinal do IAM e funcionou como um encanto, sem a necessidade de XML.
precisa
145

O suporte da AWS apontou uma solução mais simples. É basicamente a mesma ideia proposta por @Vivek M. Chawla, com uma implementação mais simples.

AWS S3:

  1. Crie um Bucket nomeado com seu domínio completo, como aws.example.com
  2. Nas propriedades do bloco, selecione Redirect all requests to another host namee insira seu URL: https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. Crie um tipo de conjunto de registros A. Altere Alias ​​para Yes. Clique no Alias Targetcampo e selecione o bucket S3 que você criou na etapa anterior.

Referência: como redirecionar domínios usando o Amazon Web Services

Documentação oficial da AWS: Existe uma maneira de redirecionar um domínio para outro domínio usando o Amazon Route 53?

Roberto Schneiders
fonte
16
Isso funciona muito bem para HTTP, mas não para HTTPS.
Mythofechelon
@mythofechelon O que você quer dizer? Até agora, não tive nenhum problema com o https. Se você deseja usar https com seu domínio (por exemplo: https: // aws.example.com), esse é um problema completamente diferente, porque você precisará de um servidor com certificado ssl para poder fazer isso.
Roberto Schneiders
1
A documentação oficial está aqui: aws.amazon.com/premiumsupport/knowledge-center/…
Mario Olivio Flores
2
Essa Redirect all requests to another host nameopção ainda existe? Não consigo vê-lo quando vou às propriedades do bucket.
Aidan
1
Essa deve ser a resposta correta; é melhor fazer referência a componentes dentro da AWS usando o Alias ​​para fins de desempenho, em vez de CNAME (que funciona, mas não é a melhor abordagem).
Douglas Figueroa
11

Consegui usar o nginx para manipular o redirecionamento 301 para a página de logon do aws.

Vá para a pasta conf nginx (no meu caso, é /etc/nginx/sites-availableonde eu crio um link simbólico /etc/nginx/sites-enabledpara os arquivos conf habilitados).

Em seguida, adicione um caminho de redirecionamento

server {
  listen 80;
  server_name aws.example.com;
  return 301 https://myaccount.signin.aws.amazon.com/console;
}

Se você estiver usando o nginx, provavelmente terá blocos de servidor adicionais (virtualhosts na terminologia do apache) para manipular o apex da sua zona (exemplo.com) ou como você o tiver configurado. Verifique se você tem um deles definido como o servidor padrão.

server {
  listen 80 default_server;
  server_name example.com;
  # rest of config ...
}

Na rota 53, adicione um A recordpara aws.example.come defina o valor para o mesmo IP usado para o ápice da sua zona.

Vincent Mac
fonte
Melhor ainda seria usar um registro Alias ​​para apontar para o balanceador de carga elástico na frente desta máquina.
Maléter #
9

Atualizar

Embora minha resposta original abaixo ainda seja válida e possa ser útil para entender a causa do encaminhamento de URL baseado em DNS não estar disponível via Amazon Route 53 imediatamente, eu recomendo verificar a solução indireta totalmente inteligente de Vivek M. Chawla por enquanto apresentada O suporte do Amazon S3 ao site redireciona e obtém um servidor autônomo menos e, portanto, uma solução gratuita na AWS somente dessa forma.

  • A implementação de uma solução automatizada para gerar esses redirecionamentos é deixada como um exercício para o leitor, mas preste homenagem à resposta épica do Vivek publicando sua solução;)

Resposta original

O Nettica deve estar executando uma solução de redirecionamento personalizada para isso, eis o problema:

Você pode criar um alias CNAME como aws.example.compara myaccount.signin.aws.amazon.com, no entanto, o DNS não fornece suporte oficial para aliasing de um subdiretório como consoleneste exemplo.

  • É uma pena que a AWS não pareça simplesmente fazer isso por padrão ao bater https://myaccount.signin.aws.amazon.com/(apenas tentei), porque isso resolveria seu problema imediatamente e faria muito sentido em primeiro lugar; Além disso, deve ser bem fácil de configurar.

Por esse motivo, alguns provedores de DNS aparentemente implementaram uma solução personalizada para permitir redirecionamentos para subdiretórios; Atrevo-me a supor que eles estão basicamente facilitando um alias CNAME para um domínio próprio e estão redirecionando novamente de lá para o destino final por meio de um redirecionamento HTTP 3xx imediato .

Portanto, para alcançar o mesmo resultado, você precisa de um serviço HTTP executando esses redirecionamentos, que não é a solução simples que se esperaria, é claro. Talvez / Espero que alguém ainda possa ter uma abordagem mais inteligente.

Steffen Opel
fonte
3
CNAMEs são aliases e não redirecionam.
ejain
@ejain - você está certo, é claro, eu corrigi isso de acordo (deve ter perdido a notificação naquela época); obrigado por apontar esta frase potencialmente enganosa!
Steffen Opel
0

Se você ainda estiver tendo problemas com a abordagem simples, crie um depósito vazio Redirect all requests to another host nameem Hospedagem na Web estática nas propriedades por meio do console. Verifique se você definiu 2 registros A na rota53, um para final-destination.come um para redirect-to.final-destination.com. As configurações de cada uma delas serão idênticas, mas o nome será diferente, de forma que corresponda aos nomes que você definiu para seus buckets / URLs.

DanV
fonte