Configurer le transfert d'URL basé sur DNS dans Amazon Route53 [fermé]

140

J'essaie de configurer le transfert dans Amazon Route53. Mon dernier service DNS (Nettica) m'a permis d'acheminer les requêtes vers "aws.example.com" vers "https://myaccount.signin.aws.amazon.com/console/".

Cette fonctionnalité est-elle prise en charge par Route53?

Comment Nettica y parvient-elle? Insère-t-il un ou des enregistrements spéciaux A, CNAME, PTR ou TXT?

Saurav
la source
La création d'une distribution Cloudfront avec l'URL comme origine fonctionne également. Faites simplement pointer le domaine vers la distribution Cloudfront à partir de Route53 et assurez-vous de configurer correctement les certificats TLS.
Deiwin le

Réponses:

326

Je rencontrais exactement le même problème que celui décrit par Saurav, mais j'avais vraiment besoin de trouver une solution qui ne nécessitait rien d'autre que Route 53 et S3. J'ai créé un guide pratique pour mon blog détaillant ce que j'ai fait.

Voici ce que j'ai trouvé.


Objectif

En utilisant uniquement les outils disponibles dans Amazon S3 et Amazon Route 53, créez une URL de redirection qui redirige automatiquement http://url-redirect-example.vivekmchawla.com vers la page de connexion AWS Console alias "MyAccount", située à l' adresse https. : //myaccount.signin.aws.amazon.com/console/ .

Ce guide vous apprendra à configurer le transfert d'URL vers n'importe quelle URL, pas seulement celles d'Amazon. Vous apprendrez comment configurer le transfert vers des dossiers spécifiques (comme "/ console" dans mon exemple), et comment changer le protocole de la redirection de HTTP à HTTPS (ou vice versa).


Première étape: créez votre compartiment S3

Ouvrez la console de gestion S3 et cliquez sur "Créer un compartiment"

Ouvrez la console de gestion S3 et cliquez sur "Créer un compartiment".


Deuxième étape: nommez votre compartiment S3

Nommez votre compartiment S3

  1. Choisissez un nom de compartiment. Cette étape est vraiment importante! Vous devez nommer le bucket EXACTEMENT le même que l'URL que vous souhaitez configurer pour le transfert. Pour ce guide, j'utiliserai le nom "url-redirect-example.vivekmchawla.com".

  2. Sélectionnez la région qui vous convient le mieux. Si vous ne savez pas, conservez la valeur par défaut.

  3. Ne vous inquiétez pas de la configuration de la journalisation. Cliquez simplement sur le bouton "Créer" lorsque vous êtes prêt.


Étape 3: Activez l'hébergement de site Web statique et spécifiez les règles de routage

Activer l'hébergement de site Web statique et spécifier les règles de routage

  1. Dans la fenêtre des propriétés, ouvrez les paramètres de "Hébergement de site Web statique".
  2. Sélectionnez l'option "Activer l'hébergement du site Web".
  3. Entrez une valeur pour le "Document d'index". Cet objet (document) ne sera jamais servi par S3 et vous n'aurez jamais à le télécharger. Utilisez simplement le nom de votre choix.
  4. Ouvrez les paramètres de "Modifier les règles de redirection".
  5. Collez l'extrait de code XML suivant dans son intégralité.

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

Si vous êtes curieux de savoir ce que fait le XML ci-dessus, consultez la documentation AWM pour «Syntaxe pour spécifier les règles de routage» . Une technique bonus (non couverte ici) consiste à transférer vers des pages spécifiques chez l'hôte de destination, par exemple http://redirect-destination.com/console/special-page.html. Renseignez-vous sur l' <ReplaceKeyWith>élément si vous avez besoin de cette fonctionnalité.


Étape 4: notez le "point de terminaison" de votre bucket de redirection

Notez le point de terminaison de votre bucket de redirection

Notez le «point de terminaison» d'hébergement de site Web statique qu'Amazon a créé automatiquement pour ce compartiment. Vous en aurez besoin pour plus tard, alors mettez en surbrillance l'URL entière, puis copiez-la et collez-la dans le bloc-notes.

MISE EN GARDE! À ce stade, vous pouvez cliquer sur ce lien pour vérifier si vos règles de redirection ont été entrées correctement, mais soyez prudent! Voici pourquoi...

Disons que vous avez entré la mauvaise valeur dans les <Hostname>balises dans vos règles de redirection. Peut-être avez-vous tapé accidentellement myaccount.amazon.comau lieu de myaccount.signin.aws.amazon.com. Si vous cliquez sur le lien pour tester l'URL du point de terminaison, AWS redirigera volontiers votre navigateur vers la mauvaise adresse!

Après avoir remarqué votre erreur, vous modifierez probablement le <Hostname>dans vos règles de redirection pour corriger l'erreur. Malheureusement, lorsque vous essayez de cliquer à nouveau sur le lien, vous finirez probablement par être redirigé vers la mauvaise adresse! Même si vous avez corrigé l' <Hostname>entrée, votre navigateur met en cache l'entrée précédente (incorrecte!). Cela se produit parce que nous utilisons une redirection HTTP 301 (permanente), que les navigateurs comme Chrome et Firefox mettront en cache par défaut.

Si vous copiez et collez l'URL du point de terminaison dans un autre navigateur (ou effacez le cache de votre navigateur actuel), vous aurez une autre chance de voir si votre <Hostname>entrée mise à jour est enfin la bonne.

Pour être sûr, si vous souhaitez tester votre URL de point de terminaison et vos règles de redirection, vous devez ouvrir une session de navigation privée, telle que "Mode navigation privée" dans Chrome. Copiez, collez et testez l'URL du point de terminaison en mode navigation privée et tout ce qui est mis en cache disparaîtra une fois que vous aurez fermé la session.


Étape 5: Ouvrez la console de gestion Route53 et accédez aux jeux d'enregistrements de votre zone hébergée (nom de domaine)

Ouvrez la console de gestion Route 53 pour ajouter des ensembles d'enregistrements à votre zone hébergée

  1. Sélectionnez la zone hébergée (nom de domaine) que vous avez utilisée lors de la création de votre bucket. Depuis que j'ai nommé mon bucket "url-redirect-example.vivekmchawla.com", je vais sélectionner la zone hébergée vivekmchawla.com.
  2. Cliquez sur le bouton "Aller aux jeux d'enregistrements".

Étape 6: Cliquez sur le bouton "Créer un jeu d'enregistrements"

Cliquez sur le bouton Créer un jeu d'enregistrements

Cliquez sur «Créer un ensemble d'enregistrements» pour ouvrir la fenêtre Créer un ensemble d'enregistrements sur le côté droit de la console de gestion Route53.


Étape 7: créer un jeu d'enregistrements CNAME

Créer un jeu d'enregistrements CNAME

  1. Dans le champ Nom, saisissez la partie nom d'hôte de l'URL que vous avez utilisée lors de l'attribution d'un nom à votre compartiment S3. La "partie nom d'hôte" de l'URL est tout à GAUCHE du nom de votre zone hébergée. J'ai nommé mon compartiment S3 "url-redirect-example.vivekmchawla.com", et ma zone hébergée est "vivekmchawla.com", donc la partie du nom d'hôte que je dois saisir est "url-redirect-example".

  2. Sélectionnez "CNAME - Nom canonique" pour le type de ce jeu d'enregistrements.

  3. Pour la valeur, collez l'URL du point de terminaison du compartiment S3 que nous avons créé à l'étape 3.

  4. Cliquez sur le bouton "Créer un jeu d'enregistrements". En supposant qu'il n'y ait pas d'erreur, vous pourrez désormais voir un nouvel enregistrement CNAME dans la liste des jeux d'enregistrements de votre zone hébergée.


Étape 8: Testez votre nouvelle redirection d'URL

Ouvrez un nouvel onglet de navigateur et saisissez l'URL que nous venons de configurer. Pour moi, c'est http://url-redirect-example.vivekmchawla.com . Si tout a bien fonctionné, vous devez être envoyé directement sur une page de connexion AWS.

Parce que nous avons utilisé l' myaccount.signin.aws.amazon.comalias comme URL de destination de notre redirection, Amazon sait exactement à quel compte nous essayons d'accéder et nous y conduit directement. Cela peut être très pratique si vous souhaitez fournir un lien de connexion AWS court, propre et de marque aux employés ou aux sous-traitants.

Terminé!  Votre transfert d'URL doit vous conduire à la page de connexion AWS.


Conclusions

Personnellement, j'adore les différents services AWS, mais si vous avez décidé de migrer la gestion DNS vers Amazon Route 53, le manque de transfert d'URL facile peut être frustrant. J'espère que ce guide vous a aidé à configurer un peu plus facilement le transfert d'URL pour vos zones hébergées.

Si vous souhaitez en savoir plus, consultez les pages suivantes du site de documentation AWS.

À votre santé!

Vivek M. Chawla
la source
15
+1 pour cette solution totalement intelligente - merci beaucoup d'avoir pris le temps de compiler un tel guide étape par étape, j'ai mis à jour ma réponse pour renvoyer les futurs lecteurs vers le vôtre en conséquence!
Steffen Opel
24
Remarque: Pour ceux qui veulent des redirections de domaine racine: example.org -> example.com - faites tout de la même manière sauf utiliser un enregistrement avec "Alias: Oui" activé. Sélectionnez ensuite le bucket comme cible.
JaredBroad
10
Excellente solution. Mais j'ai rencontré un problème en utilisant https pour l'URL d'origine. Si le bucket que je redirige est dev.example.com, la redirection fonctionne parfaitement pour http: // dev.example.com mais échoue pour https: // dev.example.com. Je n'ai pas trouvé de solution à ce problème.
Greg
4
@Greg Je pense que cela peut avoir quelque chose à voir avec la façon dont Amazon gère HTTPS pour S3. Malheureusement, lorsque vous utilisez un CNAME pour accéder à un compartiment S3, vous ne pouvez pas forcer SSL en ajoutant "https" car Amazon n'héberge pas de certificat pour "* .example.com". Puisque S3 n'autorise pas la connexion, nous n'obtenons jamais la logique de redirection. Malheureusement, je ne vois pas de solution de contournement à cela.
Vivek M. Chawla
17
Il existe une nouvelle option "Rediriger toutes les demandes vers un autre nom d'hôte" sous les options du bucker. J'ai mis là-dedans l'URL de connexion IAM et cela a fonctionné comme un charme, pas besoin de XML.
Dan Milon
145

Le support AWS a proposé une solution plus simple. C'est fondamentalement la même idée proposée par @Vivek M. Chawla, avec une implémentation plus simple.

AWS S3:

  1. Créez un bucket nommé avec votre domaine complet, comme aws.example.com
  2. Dans les propriétés du bucket, sélectionnez Redirect all requests to another host nameet saisissez votre URL: https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. Créez un jeu d'enregistrements de type A. Remplacez Alias ​​par Yes. Cliquez sur le Alias Targetchamp et sélectionnez le compartiment S3 que vous avez créé à l'étape précédente.

Référence: Comment rediriger des domaines à l'aide d'Amazon Web Services

Documentation officielle AWS: existe-t-il un moyen de rediriger un domaine vers un autre domaine à l'aide d'Amazon Route 53?

Roberto Schneiders
la source
16
Cela fonctionne très bien pour HTTP mais pas pour HTTPS.
mythofechelon
@mythofechelon Que voulez-vous dire? Je n'ai eu aucun problème avec https jusqu'à présent. Si vous souhaitez utiliser https avec votre domaine (par exemple: https: // aws.example.com), c'est un problème complètement différent, car vous aurez besoin d'un serveur avec un certificat SSL pour pouvoir le faire.
Roberto Schneiders
1
La documentation officielle est ici: aws.amazon.com/premiumsupport/knowledge-center
Mario Olivio Flores
2
Cette Redirect all requests to another host nameoption existe- t-elle toujours? Je ne peux pas le voir lorsque je vais aux propriétés du bucket.
aidan
1
Cela devrait être la bonne réponse, il est préférable de référencer les composants dans AWS en utilisant Alias ​​à des fins de performances au lieu de CNAME (cela fonctionne mais ce n'est pas la meilleure approche).
Douglas Figueroa
11

J'ai pu utiliser nginx pour gérer la redirection 301 vers la page de connexion aws.

Accédez à votre dossier nginx conf (dans mon cas, c'est /etc/nginx/sites-availabledans lequel je crée un lien symbolique vers /etc/nginx/sites-enabledpour les fichiers conf activés).

Ensuite, ajoutez un chemin de redirection

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

Si vous utilisez nginx, vous aurez très probablement des blocs de serveur supplémentaires (des hôtes virtuels dans la terminologie apache) pour gérer votre apex de zone (example.com) ou comment vous l'avez configuré. Assurez-vous que l'un d'entre eux est défini comme serveur par défaut.

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

Dans Route 53, ajoutez un A recordfor aws.example.comet définissez la valeur sur la même adresse IP utilisée pour le sommet de votre zone.

Vincent Mac
la source
Encore mieux serait d'utiliser un enregistrement Alias ​​pour pointer vers l'équilibreur de charge élastique en face de cette machine.
maletor le
9

Mettre à jour

Bien que ma réponse originale ci-dessous soit toujours valide et puisse être utile pour comprendre la cause de la non-disponibilité du transfert d'URL basé sur DNS via Amazon Route 53 , je recommande vivement de consulter la solution indirecte totalement intelligente de Vivek M. Chawla via le Prise en charge d'Amazon S3 pour les redirections de sites Web et la réalisation d'un serveur autonome moins et donc d'une solution gratuite au sein d'AWS seulement comme ça.

  • La mise en œuvre d'une solution automatisée pour générer de telles redirections reste un exercice pour le lecteur, mais veuillez rendre hommage à la réponse épique de Vivek en publiant votre solution;)

Réponse originale

Nettica doit exécuter une solution de redirection personnalisée pour cela, voici le problème:

Vous pouvez créer un alias CNAME comme aws.example.compour myaccount.signin.aws.amazon.com, cependant, DNS ne fournit pas de support officiel pour l'aliasing d'un sous-répertoire comme consoledans cet exemple.

  • C'est dommage qu'AWS ne semble pas simplement faire cela par défaut en frappant https://myaccount.signin.aws.amazon.com/(je viens d'essayer), car cela résoudrait votre problème tout de suite et aurait beaucoup de sens en premier lieu; de plus, cela devrait être assez facile à configurer de leur côté.

Pour cette raison, quelques fournisseurs DNS ont apparemment implémenté une solution personnalisée pour autoriser les redirections vers des sous-répertoires; J'imagine qu'ils facilitent fondamentalement un alias CNAME pour un domaine qui leur est propre et qu'ils redirigent à nouveau de là vers la destination finale via une redirection HTTP 3xx immédiate .

Donc, pour obtenir le même résultat, vous devez avoir un service HTTP exécutant ces redirections, ce qui n'est pas la solution simple que l'on espère bien sûr. Peut-être / J'espère que quelqu'un pourra encore trouver une approche plus intelligente.

Steffen Opel
la source
3
Les CNAME sont des alias et ne redirigent pas.
ejain
@ejain - vous avez raison bien sûr, j'ai corrigé cela en conséquence (j'ai dû manquer la notification à l'époque); merci d'avoir signalé cette formulation potentiellement trompeuse!
Steffen Opel
0

Si vous rencontrez toujours des problèmes avec l'approche simple, créez un seau vide Redirect all requests to another host namesous Hébergement Web statique dans les propriétés via la console. Assurez-vous que vous avez défini 2 enregistrements A dans route53, un pour final-destination.comet un pour redirect-to.final-destination.com. Les paramètres de chacun d'entre eux seront identiques, mais le nom sera différent afin qu'il corresponde aux noms que vous avez définis pour vos buckets / URL.

DanV
la source