Amazon S3: Statische Websites: Benutzerdefinierte Domain oder Subdomain

79

Amazon.com hat gerade angekündigt, dass man statische Websites in einem S3-Bucket hosten kann. Ich ging zu ihrer Setup-Seite unter http://docs.amazonwebservices.com/AmazonS3/latest/dev/index.html?WebsiteHosting.html und erstellte einen Bucket für meine statische Website, und es funktionierte einwandfrei. Ich habe eine URL des Formulars http: // [mein Bucket-Name] .s3-website-us-east-1.amazonaws.com /.

Ich möchte jedoch eine Subdomain, die ich besitze (z. B. static.mydomain.com), auf meine statische Website bei Amazon S3 verweisen. Hat jemand herausgefunden, wie das geht?

Ich freue mich über jede Hilfe, die Sie mir geben können.

Jay Godse
quelle

Antworten:

182

Es stellt sich heraus, dass Sie, damit es funktioniert, nicht einfach eine beliebige Subdomain einem beliebigen Bucket zuordnen können. Der vollständig qualifizierte Name der Subdomain muss mit dem Namen des S3-Buckets übereinstimmen .

  1. Angenommen, der Name Ihrer Website lautet static.mydomain.com . Anschließend müssen Sie einen gleichnamigen S3-Bucket mit dem Namen static.mydomain.com erstellen .
  2. Sobald Sie diesen Bucket als statische S3-Website konfiguriert haben, wird ihm eine URL zugewiesen, die ungefähr so ​​aussieht wie http://static.mydomain.com.s3-website-us-east-1.amazonaws.com .
  3. Gehen Sie zu Ihrem Domain-Host und ordnen Sie Ihre Subdomain ab Schritt 2 der URL zu. In enom.com bedeutete dies, dass der Host " static " der Adresse " static.mydomain.com.s3-website-us-east-1.amazonaws" zugeordnet wurde .com "als CNAME-Datensatz.

Vielen Dank an Uriah und David für Vorschläge. Ich bekam schließlich meine Antwort in einem Amazon AWS-Forum .

Jay Godse
quelle
Ich weiß es nicht. Du musst es ausprobieren. Außerdem werden Sie wahrscheinlich auf das SSL-Zertifikat von Amazon und nicht auf Ihr eigenes zurückgreifen.
Jay Godse
2
Sie können Ihren c- Namen einfach auf s3-website-us-east-1.amazonaws.com verweisen . Es scheint, dass die Subdomain ignoriert wird und der HOST-http-Header verwendet wird, um den Bucket anzugeben. Es scheint keine Rolle zu spielen, ob die beiden übereinstimmen oder ob die Subdomain vorhanden ist.
Lynks
@lynks - Sie können sogar die Region fallen lassen und einfach mit s3.amazonaws.com
Plyawn
@hnprashanth das ist richtig (mit nur S3) Sie können jedoch bis zu 10 Subdomains haben, die mit einer CloudFront-Distribution auf denselben Ressourcenspeicherort verweisen ... siehe docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/…
plyawn
Das funktioniert. AWS gibt dies in einem frühen Intro-Abschnitt an, aber wenn Sie alle Schritte durchlaufen, wird es leicht / wahrscheinlich vergessen. Es ist eine bessere Lösung als die lynks-cname-Lösung, da AWS jetzt Transaktionsgebühren für die Suche nach cname durch jeden Benutzer berechnet.
Mike_Laird
5

Stellen Sie sicher, dass Sie beim Erstellen Ihres Buckets die Namenskonventionen für S3-DNS-Buckets befolgen .

Dann:

  1. Aktivieren Sie die S3-Website-Unterstützung für den Bucket mithilfe der AWS Management Console unter Eigenschaften -> Website

  2. Stellen Sie sicher, dass die Dateien im Bucket über öffentliche Leseberechtigungen verfügen

  3. Probieren Sie die Website mit dem in der Verwaltungskonsole aufgeführten Endpunkt aus

  4. Richten Sie Ihre CNAME den aufgeführten Endpunkt (zB www.example.com CNAME www.example.com.s3-website-us-east-1.amazonaws.com)

Uriah Carpenter
quelle
Ich habe alle 4 Schritte gemacht. Schritt 3 funktioniert. Der cname in Schritt 4 wird konfiguriert (mit enom.com, was dies mit anderen Subdomains erfolgreich macht), aber weder meine s3-Subdomain mit einem Browser treffen noch einen Ping-Befehl ausführen. Bei heroku.com und blogger.com müssen Sie ihnen mitteilen, welche Ihrer Subdomains welche Heroku-App oder welchen Blogger-Blog treffen wird. Statische S3-Websites scheinen dies nicht zu haben.
Jay Godse
2
@ Jay Godse Wie heißt Ihr Website-fähiger Bucket und seine Region?
Uriah Carpenter
4
  1. Erstellen Sie eine gehostete Zone, z. B. mydomain.com. Sie können eine webbasierte Benutzeroberfläche DNS30 verwenden .
  2. Erstellen Sie nun einen CNAME-Eintrag für diese gehostete Zone.
  3. Fügen Sie einen Ressourceneintrag mit folgenden Details hinzu. Name als "mydomain.com" Geben Sie als "CNAME" ein. Wert als "mydomain.com.s3.amazonaws.com" TTl als "in Ihrer erforderlichen Konfiguration".

Hoffe, dass dies auch für static.mydomain.com funktioniert

Grüße-

Udit

udit
quelle
3

Wie wäre es mit einem DNS-Dienst wie der von Amazon bereitgestellten Route 53? Richten Sie es mit einem CNAME von Ihrer Subdomain zur öffentlichen Bucket-URL ein. Wenn Ihr Domain-Unternehmen eine CNAME-Konfiguration bereitstellt, kann dies natürlich direkt funktionieren.

Thomas die Lokomotive
quelle
1

Update 2019: AWS- Hosting für benutzerdefinierte Subdomänen in S3

Ab heute haben die folgenden Schritte für mich funktioniert, um eine funktionierende Subdomain für die von AWS S3 gehostete statische Website zu haben:

  1. Erstellen Sie einen Bucket mit dem Namen der Subdomain. In diesem Beispiel www. Subtest .mysite.com

Aws Eimer

Hinweis: Stellen Sie auf der Registerkarte "Berechtigung" des Buckets sicher, dass der öffentliche Zugriff gesperrt ist (Bucket-Einstellungen). Die Zugriffssteuerungsliste und die Bucket-Richtlinie sind entsprechend festgelegt, um sicherzustellen, dass der Bucket öffentlich ist. (Angenommen, Sie haben dies bereits für Ihren Root-Domain-Bucket getan, können diese Einstellungen in diesem Subdomain-Bucket gespiegelt werden.)

AWS-Bucket-Berechtigungen

  1. Laden Sie die Datei index.html in den Bucket hoch

Indexdatei im S3-Bucket

  1. Erstellen Sie einen CNAME-Eintrag bei Ihrem Domain-Anbieter CNAME-Datensatz in namecheap
zennni
quelle