Ont Itinéraire 53 point à une instance au lieu d'une IP ou CNAME?
Nous sommes à l'aide de DNS Route 53 pour pointer vers une instance EC2. Est-il possible de l'Itinéraire 53 à point à l'instance directement, au lieu d'une adresse IP Élastique ou CNAME?
J'ai plusieurs raisons à cela:
-
Je ne veux pas graver un IP.
-
Cname ne sont pas fiables, parce que si une instance descend et remonte, le nom complet, l'ec2-X-X-X-X.compute-1.amazonaws.com le changement.
-
Dans l'avenir, j'ai besoin de faire tourner les instances par programme et à les aborder avec un sous-domaine, et je ne vois pas de moyen facile de le faire avec deux adresses ip élastiques ou Cname.
Quelle est la meilleure approche?
- Ce ne sera probablement pas obtenir de réponse, mais je suis intéressé par la réponse aussi. Si j'propre "example.com" et d'avoir mon propre serveur DNS, puis-je direct "foo.example.com" à une instance EC2?
- Eh bien, pour répondre à ma propre méta-question, j'ai attribué une IP élastique de mon exemple et ensuite créé une Un record pour elle. Vous pouvez également créer un enregistrement CNAME pour l'instance DNS public de nom, mais qui n'est pas stable, étant donné que le nom DNS change lorsque vous arrêtez et redémarrez l'instance.
- En fait, une fois que vous attribuez une adresse IP élastique, vous pouvez prévoir le public nom DNS qui sera créé: ec2-{{IP Élastique}}.{{AWS AZ}}.compute.amazonaws.com. Si vous affectez un cname pour que les DNS route 53, il doit toujours pointer correctement à l'instance, vous affectez l'EIP pour. Cela a l'avantage de résoudre à l'interne EC2 ip lorsque vous êtes à l'intérieur du réseau EC2 et le bon public IP Élastique à l'extérieur.
Vous devez vous connecter pour publier un commentaire.
J'ai écrit ma propre solution à ce problème depuis que j'ai été malheureux avec d'autres approches qui ont été présentés ici. À l'aide d'Amazon outils CLI est sympa, mais à mon humble avis ils ont tendance à être plus lent que diriger les appels de l'API à l'aide d'autres Amazon API des bibliothèques (Ruby par exemple).
Voici un lien vers mon AWS Route53 DNS instance de mise à jour Gist. Il contient de la politique IAM et un script Ruby. Vous devez créer un nouvel utilisateur dans le panneau IAM, le mettre à jour avec l'attaché politique (avec votre id de zone) et définir les informations d'identification et les paramètres dans le script Ruby. Premier paramètre est le nom de l'alias de votre instance dans votre zone hébergée. Exemple privée du nom d'hôte est un alias de
<hostname>.<domain>
de l'instance et du public le nom d'hôte est un alias de<hostname>-public.<domain>
Mise à JOUR: Voici un lien vers AWS Route53 DNS instance de mise à jour init.d script l'enregistrement de noms d'hôte lors de l'instance bottes. En voici un autre, si vous voulez l'utiliser AWS Route53 DNS d'équilibrage de charge de manière similaire.
Si vous vous en tenez à l'aide de route53, vous pouvez faire un script qui met à jour l'enregistrement CNAME pour cette instance, à chaque fois qu'il redémarre.
voir this -> http://cantina.co/automated-dns-for-aws-instances-using-route-53/ (divulgation, je n'ai pas créer ce, bien que je l'ai utilisé comme un point de saut d'obstacles pour une situation similaire)
mieux encore, parce que vous avez mentionné être en mesure de faire tourner les instances de la programmation, cette approche devrait vous guider à cette fin.
voir aussi -> http://docs.pythonboto.org/en/latest/index.html
À l'aide d'une combinaison de Cloudwatch, Route53 et Lambda est également une option si vous êtes l'hôte d'au moins une partie de votre dns en Route53. L'avantage, c'est que vous n'avez pas besoin de toutes les applications en cours d'exécution sur l'instance elle-même.
À utiliser cette approche permet de configurer une Cloudwatch règle pour déclencher une fonction Lambda chaque fois que l'état d'une instance EC2 modifications en cours d'exécution. La fonction Lambda peut ensuite récupérer l'adresse ip publique de l'instance et de la mise à jour de l'enregistrement dns dans Route53.
Le Lambda pourrait ressembler à quelque chose comme ceci (à l'aide Node.js runtime):
Vous devrez exécuter le Lambda avec un rôle qui dispose des autorisations nécessaires pour décrire les instances EC2 et mettre à jour des enregistrements dans Route53.
Avec Route 53, vous pouvez créer des enregistrements d'alias qui correspond à un Elastic Load Balancer (ELB):
http://docs.amazonwebservices.com/Route53/latest/DeveloperGuide/HowToAliasRRS.html
Je n'ai pas essayé sur aws EC2 instance, mais il devrait fonctionner aussi.
J'ai écrit un petit programme en Java qui permettent de détecter l'IP publique de la machine et de mettre à jour un enregistrement précis sur aws route 53.
La seule exigence est que vous devez avoir Java installé sur votre instance EC2.
Le projet est hébergé sur https://github.com/renatodelgaudio/awsroute53 et libre à vous de le modifier en cas de besoin
Vous pourriez configurer pour exécuter au démarrage ou comme un crontab travail de manière à ce que votre dossier mis à jour avec la nouvelle adresse IP publique suivant des instructions semblables à ces
Linux étapes de l'installation manuelle