Frage Keine Ziele verfügbar, wenn versucht wird, ein Aliasziel von Route 53 auf S3 zu setzen


Ich versuche, eine einfache Amazon AWS S3-basierte Website einzurichten, wie erklärt Hier.

Ich habe den S3-Bucket (simples3websitetest.com) eingerichtet und ihm die (hoffentlich) richtigen Berechtigungen gegeben:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::simples3websitetest.com/*"
            ]
        }
    ]
}

Ich habe index.html hochgeladen, den Zugriff auf die Webseite eingerichtet und es ist über erreichbar http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html

So weit, so gut, jetzt möchte ich Amazon Route53 Zugang einrichten und das ist, wo ich stecken geblieben bin.

Ich habe eine gehostete Zone auf einer Domain eingerichtet, die ich besitze (resourcesbox.net), und auf "create record set" geklickt und zum Schritt "setup alias" gewechselt, aber unter "S3 websites endpoints" bekomme ich "No targets available" Versuchen Sie, das Aliasziel festzulegen.

Was habe ich verpasst??


21
2018-03-26 13:10


Ursprung


Ab Oktober 2012 führte Amazon eine Funktion zur Verarbeitung von Weiterleitungen (HTTP 301) für S3-Buckets ein. Sie können meine vorherige Antwort hier lesen. stackoverflow.com/a/24218895/1160780 - Alberto Spelta


Antworten:


Der A-Datensatz-Alias, den Sie erstellen, muss mit dem Namen des Buckets übereinstimmen, da das virtuelle Hosting von Buckets in S3 erfordert, dass der Host: Der vom Browser gesendete Header entspricht dem Bucket-Namen. Es gibt nicht wirklich einen anderen praktischen Weg, auf dem das virtuelle Hosting von Buckets durchgeführt werden könnte ... der Bucket muss durch einen Mechanismus identifiziert werden, und dieser Mechanismus ist der HTTP-Header.

Um einen Alias ​​für einen Bucket innerhalb der Domain "example.com" zu erstellen, muss der Bucket-Name auch ein Hostname sein, den Sie innerhalb dieser Domain deklarieren können ... der Route 53 A-Record "testbucket.example .com, "zum Beispiel, kann nur Alias ​​in einen Bucket namens "testbucket.example.com" ... und keinen anderen Bucket.

In Ihrer Frage brechen Sie diese Einschränkung ... aber Sie können nur einen Alias ​​für einen Bucket mit dem Namen "simples3websitetest.com" innerhalb der Domain "simples3websitestest.com" (und am Anfang der) erstellen.

Dies ist von Entwurf und nicht genau eine Einschränkung von Route 53 noch von S3. Sie verhindern nur, dass Sie etwas tun, das unmöglich funktionieren kann. Web-Server kennen weder Aliasing noch CNAMEs oder irgendetwas anderes im DNS - sie erhalten nur den ursprünglichen Hostnamen, mit dem der Browser versucht, sich zu verbinden, in den vom Browser gesendeten HTTP-Headern ... und S3 verwendet dies Informationen zum Identifizieren des Bucket-Namens, auf den sich die Anforderung bezieht.

Amazon S3 erfordert, dass Sie Ihrem Bucket denselben Namen wie Ihrer Domäne geben. Dadurch kann Amazon S3 die von Webbrowsern gesendeten Hostheader richtig auflösen, wenn ein Benutzer Inhalte von Ihrer Website anfordert. Daher empfehlen wir, dass Sie Ihre Buckets für Ihre Website in Amazon S3 erstellen, bevor Sie zahlen, um Ihren Domain-Namen zu registrieren.

http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-bucket.html#bucket-requirements

Beachten Sie jedoch, dass diese Einschränkung nur gilt, wenn Sie CloudFront nicht vor Ihrem Bucket verwenden.

Mit CloudFront gibt es mehr Flexibilität, denn die Host: header kann von CloudFront selbst neu geschrieben werden, bevor die Anfrage an S3 übergeben wird. Sie konfigurieren den "Ursprungshost" in Ihrer CloudFront-Distribution als your-bucket.s3-website-xx-yyyy-n.amazonaws.comDabei steht xx-yyyy-n für die AWS-Region von S3, in der Ihr Bucket erstellt wurde. Dieser Endpunkt wird in der S3-Konsole für jeden Bucket angezeigt.


32
2018-03-26 17:41



Das war in der Tat das Problem, ich habe einen Eimer mit dem Namen resourcesbox.net erstellt und er tauchte auf. Vielen Dank! Kurze Folgefrage: Was bedeutet das, wenn ich verschiedene Buckets für diese Domain haben möchte, muss ich Subdomains haben, die zu jedem Bucket passen, oder? Es gibt keinen Weg um es herum? - Amir Zucker
Ich bin mir nicht ganz sicher, was du mit "Ich muss Subdomains haben" meinst. Sie müssen einen A-Eintrag in Route 53 mit einem Hostnamen erstellen, der mit jedem Bucket übereinstimmt, den Sie zum Hosten einer Website in S3 verwenden möchten, ja. - Michael - sqlbot
@oberstet diese Frage betrifft Route 53 alias Datensätze, die auf S3-Buckets mit aktiviertem Website-Hosting verweisen, führen dazu, dass der DNS auf den Website-Endpunkt und nicht auf den REST-Endpunkt aufgelöst wird. Die Endpunkte der Website SSL wird überhaupt nicht unterstützt; nur die REST-Endpunkte. Ebenfalls, Alle Platzhalterzertifikate unterstützen nur maximal eins  * und es kann nur in der linken Hostname-Komponente erscheinen, so dass es sich nicht wirklich um eine S3-Beschränkung handelt. - Michael - sqlbot
@oberst 6.4.3.1 Der Client sollte NICHT versuchen, einen präsentierten Bezeichner zu finden, bei dem das Platzhalterzeichen eine andere als die ganz links liegende Bezeichnung enthält. Es gibt also keine Multi-Tier-Wildcard. Auf jeden Fall, dein Boto-Problem ist Eine Frage der Option "Calling Format" wird anscheinend falsch implementiert. Auf jeden Bucket kann über https mit dem Bucket-Namen als erster zugegriffen werden Pfad Element unter der S3-URL für die richtige Region des Buckets z.B. https://s3-us-west-2.amazonaws.com/my-bucket.with-dots.in-us-west-2/key. Falscher regionaler Endpunkt = Umleitungsfehler. - Michael - sqlbot
@MartinLyne danke. Ich habe einen Verweis auf die S3-Dokumentation hinzugefügt, in dem der Bucket-Name und der Domänenname identisch sein müssen, und ich erwähne die Problemumgehung für einen bereits verwendeten Bucket-Namen mithilfe von CloudFront. In den us-east-1- und us-west-2-Regionen und möglicherweise auch anderen Ländern sind die Kosten für die Verwendung von CloudFront vernachlässigbar und können möglicherweise sogar ein wenig einsparen, da CF-Downloads um 0,005 $ / GB billiger sind als S3 direkt an einem Rand Standorte. - Michael - sqlbot