Richten Sie die DNS-basierte URL-Weiterleitung in Amazon Route53 ein [geschlossen]

140

Ich versuche, die Weiterleitung in Amazon Route53 einzurichten. Mit meinem letzten DNS-Dienst (Nettica) konnte ich Anfragen an "aws.example.com" an "https://myaccount.signin.aws.amazon.com/console/" weiterleiten.

Wird diese Funktionalität von Route53 unterstützt?

Wie erreicht Nettica das? Fügt es einen speziellen A-, CNAME-, PTR- oder TXT-Datensatz ein?

Saurav
quelle
Das Erstellen einer Cloudfront-Distribution mit der URL als Ursprung funktioniert ebenfalls. Zeigen Sie einfach auf die Cloudfront-Distribution von Route53 und stellen Sie sicher, dass die TLS-Zertifikate korrekt konfiguriert sind.
Deiwin

Antworten:

325

Ich hatte genau das gleiche Problem wie Saurav, aber ich musste wirklich eine Lösung finden, die nichts anderes als Route 53 und S3 erforderte. Ich habe eine Anleitung für meinen Blog erstellt, in der genau beschrieben wird, was ich getan habe.

Folgendes habe ich mir ausgedacht.


Zielsetzung

Erstellen Sie mit nur den in Amazon S3 und Amazon Route 53 verfügbaren Tools eine URL-Umleitung, die http://url-redirect-example.vivekmchawla.com automatisch an die AWS Console-Anmeldeseite mit dem Alias ​​"MyAccount" unter https weiterleitet : //myaccount.signin.aws.amazon.com/console/ .

In diesem Handbuch erfahren Sie, wie Sie die URL-Weiterleitung an eine beliebige URL einrichten, nicht nur an eine von Amazon. Sie erfahren, wie Sie die Weiterleitung an bestimmte Ordner einrichten (z. B. "/ console" in meinem Beispiel) und das Protokoll der Umleitung von HTTP zu HTTPS ändern (oder umgekehrt).


Erster Schritt: Erstellen Sie Ihren S3-Bucket

Öffnen Sie die S3 Management Console und klicken Sie auf "Bucket erstellen".

Öffnen Sie die S3-Verwaltungskonsole und klicken Sie auf "Bucket erstellen".


Schritt zwei: Benennen Sie Ihren S3-Eimer

Nennen Sie Ihren S3-Eimer

  1. Wählen Sie einen Bucket-Namen. Dieser Schritt ist wirklich wichtig! Sie müssen den Bucket genau so benennen wie die URL, die Sie für die Weiterleitung einrichten möchten. In diesem Handbuch verwende ich den Namen "url-redirect-example.vivekmchawla.com".

  2. Wählen Sie die Region aus, die für Sie am besten geeignet ist. Wenn Sie es nicht wissen, behalten Sie die Standardeinstellung bei.

  3. Machen Sie sich keine Sorgen über das Einrichten der Protokollierung. Klicken Sie einfach auf die Schaltfläche "Erstellen", wenn Sie bereit sind.


Schritt 3: Aktivieren Sie das statische Website-Hosting und geben Sie Routing-Regeln an

Aktivieren Sie das statische Website-Hosting und geben Sie Routing-Regeln an

  1. Öffnen Sie im Eigenschaftenfenster die Einstellungen für "Statisches Website-Hosting".
  2. Wählen Sie die Option "Website-Hosting aktivieren".
  3. Geben Sie einen Wert für das "Indexdokument" ein. Dieses Objekt (Dokument) wird niemals von S3 bereitgestellt, und Sie müssen es niemals hochladen. Verwenden Sie einfach einen beliebigen Namen.
  4. Öffnen Sie die Einstellungen für "Umleitungsregeln bearbeiten".
  5. Fügen Sie das folgende XML-Snippet vollständig ein.

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

Wenn Sie neugierig sind, was das obige XML tut, besuchen Sie die AWM-Dokumentation für "Syntax zum Festlegen von Routing-Regeln" . Eine Bonus-Technik (hier nicht behandelt) ist beispielsweise die Weiterleitung an bestimmte Seiten des Zielhosts http://redirect-destination.com/console/special-page.html. Lesen Sie mehr über das <ReplaceKeyWith>Element, wenn Sie diese Funktionalität benötigen.


Schritt 4: Notieren Sie sich den "Endpunkt" Ihres Redirect Bucket.

Notieren Sie sich den Endpunkt Ihres Redirect Bucket

Notieren Sie sich den "Endpunkt" des statischen Website-Hostings, den Amazon automatisch für diesen Bucket erstellt hat. Sie benötigen dies für später. Markieren Sie daher die gesamte URL, kopieren Sie sie und fügen Sie sie in den Editor ein.

VORSICHT! An dieser Stelle können Sie tatsächlich auf diesen Link klicken, um zu überprüfen, ob Ihre Umleitungsregeln korrekt eingegeben wurden. Seien Sie jedoch vorsichtig! Hier ist der Grund...

Angenommen, Sie haben in den <Hostname>Tags in Ihren Umleitungsregeln den falschen Wert eingegeben . Vielleicht haben Sie versehentlich getippt myaccount.amazon.com, anstatt myaccount.signin.aws.amazon.com. Wenn Sie auf den Link klicken, um die Endpunkt-URL zu testen, leitet AWS Ihren Browser gerne an die falsche Adresse weiter!

Nachdem Sie Ihren Fehler bemerkt haben, werden Sie wahrscheinlich die <Hostname>in Ihren Umleitungsregeln bearbeiten , um den Fehler zu beheben. Wenn Sie erneut versuchen, auf den Link zu klicken, werden Sie höchstwahrscheinlich wieder an die falsche Adresse weitergeleitet! Obwohl Sie den <Hostname>Eintrag korrigiert haben, speichert Ihr Browser den vorherigen (falschen!) Eintrag zwischen. Dies liegt daran, dass wir eine (permanente) HTTP 301-Umleitung verwenden, die Browser wie Chrome und Firefox standardmäßig zwischenspeichern.

Wenn Sie die Endpunkt-URL kopieren und in einen anderen Browser einfügen (oder den Cache in Ihrem aktuellen löschen), erhalten Sie erneut die Möglichkeit, festzustellen, ob Ihr aktualisierter <Hostname>Eintrag endgültig der richtige ist.

Wenn Sie Ihre Endpoint-URL und Umleitungsregeln testen möchten, sollten Sie aus Sicherheitsgründen eine private Browsersitzung wie "Inkognito-Modus" in Chrome öffnen. Kopieren, Einfügen und Testen der Endpunkt-URL im Inkognito-Modus. Alle zwischengespeicherten Daten werden gelöscht, sobald Sie die Sitzung schließen.


Schritt 5: Öffnen Sie die Route53-Verwaltungskonsole und wechseln Sie zu den Datensatzgruppen für Ihre gehostete Zone (Domänenname).

Öffnen Sie die Route 53-Verwaltungskonsole, um Ihrer gehosteten Zone Datensatzsätze hinzuzufügen

  1. Wählen Sie die gehostete Zone (Domainname) aus, die Sie beim Erstellen Ihres Buckets verwendet haben. Da ich meinen Bucket "url-redirect-example.vivekmchawla.com" genannt habe, werde ich die gehostete Zone von vivekmchawla.com auswählen.
  2. Klicken Sie auf die Schaltfläche "Gehe zu Datensatzgruppen".

Schritt 6: Klicken Sie auf die Schaltfläche "Datensatz erstellen"

Klicken Sie auf die Schaltfläche Datensatz erstellen

Durch Klicken auf "Datensatzsatz erstellen" wird das Fenster "Datensatzsatz erstellen" auf der rechten Seite der Route53-Verwaltungskonsole geöffnet.


Schritt 7: Erstellen Sie einen CNAME-Datensatz

Erstellen Sie einen CNAME-Datensatz

  1. Geben Sie im Feld Name den Hostnamen-Teil der URL ein, den Sie beim Benennen Ihres S3-Buckets verwendet haben. Der "Hostname-Teil" der URL ist alles links vom Namen Ihrer Hosted Zone. Ich habe meinen S3-Bucket "url-redirect-example.vivekmchawla.com" genannt und meine gehostete Zone ist "vivekmchawla.com". Der Hostnamen-Teil, den ich eingeben muss, ist "url-redirect-example".

  2. Wählen Sie als Typ dieses Datensatzes "CNAME - Canonical name".

  3. Fügen Sie für den Wert die Endpunkt-URL des S3-Buckets ein, den wir in Schritt 3 erstellt haben.

  4. Klicken Sie auf die Schaltfläche "Datensatz erstellen". Angenommen, es liegen keine Fehler vor, können Sie jetzt einen neuen CNAME-Datensatz in der Liste der Datensatzsätze Ihrer gehosteten Zone anzeigen.


Schritt 8: Testen Sie Ihre neue URL-Umleitung

Öffnen Sie eine neue Browser-Registerkarte und geben Sie die gerade eingerichtete URL ein. Für mich ist das http://url-redirect-example.vivekmchawla.com . Wenn alles richtig funktioniert hat, sollten Sie direkt zu einer AWS-Anmeldeseite weitergeleitet werden.

Da wir den myaccount.signin.aws.amazon.comAlias ​​als Ziel-URL für unsere Weiterleitung verwendet haben, weiß Amazon genau, auf welches Konto wir zugreifen möchten, und führt uns direkt dorthin. Dies kann sehr praktisch sein, wenn Sie Mitarbeitern oder Auftragnehmern einen kurzen, sauberen AWS-Anmeldelink mit Markenzeichen geben möchten.

Alles erledigt!  Ihre URL-Weiterleitung sollte Sie zur AWS-Anmeldeseite führen.


Schlussfolgerungen

Ich persönlich liebe die verschiedenen AWS-Dienste, aber wenn Sie sich entschieden haben, die DNS-Verwaltung auf Amazon Route 53 zu migrieren, kann das Fehlen einer einfachen URL-Weiterleitung frustrierend sein. Ich hoffe, dieser Leitfaden hat dazu beigetragen, die Einrichtung der URL-Weiterleitung für Ihre gehosteten Zonen etwas zu vereinfachen.

Wenn Sie mehr erfahren möchten, besuchen Sie bitte die folgenden Seiten der AWS-Dokumentationssite.

Prost!

Vivek M. Chawla
quelle
15
+1 für diese äußerst intelligente Lösung - vielen Dank, dass Sie sich die Zeit genommen haben, eine solch epische Schritt-für-Schritt-Anleitung zu erstellen. Ich habe meine Antwort aktualisiert , um zukünftige Leser entsprechend auf Ihre zu verweisen!
Steffen Opel
23
Hinweis :: Für diejenigen, die Root-Domain-Weiterleitungen wünschen: example.org -> example.com - machen Sie alles gleich, außer dass Sie einen Datensatz mit aktiviertem "Alias: Ja" verwenden. Wählen Sie dann den Eimer als Ziel.
JaredBroad
10
Tolle Lösung. Bei der Verwendung von https für die ursprüngliche URL ist jedoch ein Problem aufgetreten. Wenn der Bucket, den ich umleitung, dev.example.com ist, funktioniert die Umleitung hervorragend für http: // dev.example.com, schlägt jedoch für https: // dev.example.com fehl. Ich habe keine Lösung für dieses Problem gefunden.
Greg
4
@ Greg Ich denke, das hat möglicherweise etwas damit zu tun, wie Amazon mit HTTPS für S3 umgeht. Wenn Sie einen CNAME für den Zugriff auf einen S3-Bucket verwenden, können Sie SSL leider nicht durch Hinzufügen von "https" erzwingen, da Amazon kein Zertifikat für "* .example.com" hostet. Da S3 die Verbindung nicht zulässt, gelangen wir nie zur Umleitungslogik. Leider kann ich keine Problemumgehung dafür finden.
Vivek M. Chawla
17
Unter den Bucker-Optionen gibt es eine neue Option "Alle Anforderungen an einen anderen Hostnamen umleiten". Ich habe dort die IAM-Anmelde-URL eingegeben und es hat wie ein Zauber funktioniert, ohne dass XML erforderlich ist.
Dan Milon
145

Die AWS-Unterstützung wies auf eine einfachere Lösung hin. Es ist im Grunde die gleiche Idee, die von @Vivek M. Chawla vorgeschlagen wurde, mit einer einfacheren Implementierung.

AWS S3:

  1. Erstellen Sie einen Bucket mit dem Namen Ihrer vollständigen Domain, wie z aws.example.com
  2. Wählen Sie in den Bucket-Eigenschaften Redirect all requests to another host nameIhre URL aus und geben Sie sie ein: https://myaccount.signin.aws.amazon.com/console/

AWS Route53:

  1. Erstellen Sie einen Datensatztyp A. Ändern Sie den Alias ​​in Yes. Klicken Sie auf das Alias TargetFeld und wählen Sie den S3-Bucket aus, den Sie im vorherigen Schritt erstellt haben.

Referenz: So leiten Sie Domains mithilfe von Amazon Web Services um

Offizielle AWS-Dokumentation: Gibt es eine Möglichkeit, eine Domain mithilfe von Amazon Route 53 auf eine andere Domain umzuleiten?

Roberto Schneiders
quelle
16
Dies funktioniert gut für HTTP, aber nicht für HTTPS.
Mythofechelon
@mythofechelon Was meinst du? Ich hatte bisher kein Problem mit https. Wenn Sie https mit Ihrer Domain verwenden möchten (z. B. https: // aws.example.com), ist dies ein völlig anderes Problem, da Sie dazu einen Server mit SSL-Zertifikat benötigen.
Roberto Schneiders
1
Die offizielle Dokumentation ist hier: aws.amazon.com/premiumsupport/knowledge-center/…
Mario Olivio Flores
2
Existiert diese Redirect all requests to another host nameOption noch? Ich kann es nicht sehen, wenn ich zu Bucket-Eigenschaften gehe.
Aidan
1
Dies sollte die richtige Antwort sein. Es ist besser, Komponenten in AWS mithilfe von Alias ​​für Leistungszwecke anstelle von CNAME zu referenzieren (das funktioniert, ist aber nicht der beste Ansatz).
Douglas Figueroa
11

Ich konnte Nginx verwenden, um die 301-Weiterleitung zur aws-Anmeldeseite zu handhaben.

Gehen Sie zu Ihrem nginx conf-Ordner (in meinem Fall /etc/nginx/sites-availableerstelle ich einen Symlink zu /etc/nginx/sites-enabledden aktivierten conf-Dateien).

Fügen Sie dann einen Umleitungspfad hinzu

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

Wenn Sie nginx verwenden, verfügen Sie höchstwahrscheinlich über zusätzliche Serverblöcke (virtuelle Hosts in der Apache-Terminologie), um Ihren Zonen-Apex (example.com) zu verwalten, oder wie auch immer Sie ihn eingerichtet haben. Stellen Sie sicher, dass einer von ihnen als Standardserver festgelegt ist.

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

Fügen Sie in Route 53 ein A recordfor hinzu aws.example.comund setzen Sie den Wert auf dieselbe IP, die für Ihren Zonenscheitelpunkt verwendet wird.

Vincent Mac
quelle
Noch besser wäre es, einen Alias-Datensatz zu verwenden, um auf den elastischen Lastausgleich vor dieser Maschine zu zeigen.
Maletor
9

Aktualisieren

Obwohl meine ursprüngliche Antwort unten immer noch gültig ist und hilfreich sein kann, um die Ursache für die DNS-basierte URL-Weiterleitung zu verstehen, die nicht sofort über Amazon Route 53 verfügbar ist , empfehle ich dringend, die äußerst intelligente indirekte Lösung von Vivek M. Chawla über die inzwischen eingeführte Lösung zu prüfen Amazon S3-Unterstützung für Website-Weiterleitungen und das Erreichen eines eigenständigen Servers weniger und damit eine kostenlose Lösung innerhalb von AWS nur so.

  • Die Implementierung einer automatisierten Lösung zum Generieren solcher Weiterleitungen bleibt dem Leser als Übung, aber bitte würdigen Sie die epische Antwort von Vivek, indem Sie Ihre Lösung veröffentlichen;)

Ursprüngliche Antwort

Nettica muss hierfür eine benutzerdefinierte Umleitungslösung ausführen. Hier ist das Problem:

Sie können einen CNAME-Alias ​​wie aws.example.comfür erstellen. myaccount.signin.aws.amazon.comDNS bietet jedoch keine offizielle Unterstützung für das Aliasing eines Unterverzeichnisses wie consolein diesem Beispiel.

  • Es ist schade, dass AWS dies beim Schlagen nicht standardmäßig zu tun scheint https://myaccount.signin.aws.amazon.com/(ich habe es gerade versucht), da es Ihr Problem sofort lösen und in erster Linie viel Sinn machen würde. Außerdem sollte es ziemlich einfach sein, sie am Ende zu konfigurieren.

Aus diesem Grund haben einige DNS-Anbieter offenbar eine benutzerdefinierte Lösung implementiert, um Weiterleitungen in Unterverzeichnisse zu ermöglichen. Ich gehe davon aus, dass sie im Grunde genommen einen CNAME-Alias ​​für eine eigene Domain ermöglichen und von dort über eine sofortige HTTP 3xx-Umleitung erneut zum endgültigen Ziel umleiten .

Um das gleiche Ergebnis zu erzielen, müsste ein HTTP-Dienst ausgeführt werden, der diese Weiterleitungen ausführt. Dies ist natürlich nicht die einfache Lösung, auf die man hoffen würde. Vielleicht / Hoffentlich kann sich trotzdem jemand einen klügeren Ansatz einfallen lassen.

Steffen Opel
quelle
3
CNAMEs sind Aliase und leiten nicht um.
Ejain
@ejain - Sie haben natürlich Recht, ich habe dies entsprechend behoben (muss die Benachrichtigung damals verpasst haben); Vielen Dank für den Hinweis auf diese möglicherweise irreführende Formulierung!
Steffen Opel
0

Wenn Sie immer noch Probleme mit dem einfachen Ansatz haben, erstellen Sie einen leeren Bucket Redirect all requests to another host nameunter Statisches Webhosting in den Eigenschaften über die Konsole. Stellen Sie sicher, dass Sie in route53 2 A-Datensätze festgelegt haben, einen für final-destination.comund einen für redirect-to.final-destination.com. Die Einstellungen für jede dieser Einstellungen sind identisch, der Name ist jedoch unterschiedlich, sodass er mit den Namen übereinstimmt, die Sie für Ihre Buckets / URLs festgelegt haben.

DanV
quelle