So Hosten Sie eine Website von S3

0
213

Chancen sind, Sie wahrscheinlich nicht brauchen, eine vollständige web-server wie NGINX auf EC2, um Ihre website und läuft. Wenn Sie gerade auf der Suche nach host eine statische website haben, können Sie das speichern aller Inhalte in S3, und hosten Sie Sie von dort.

Warten Sie, ich Brauche nicht ein Server?

Wenn Ihre Website nicht irgendeine server-seitige Verarbeitung (wie z.B. PHP), einfach speichern Sie die Dateien auf S3, konfigurieren Sie den Eimer zum hosten der Website, und zeigen Sie Ihre DNS auf den Eimer ersetzen den Einsatz von NGINX oder Apache.

“Server-side-Verarbeitung” ist viel weniger breit, als es klingt. Nur weil Ihre website ist “statisch” bedeutet nicht, dass es aussieht wie ein 1990er GeoCities-Seite, ohne JavaScript. Alles, was “static” bedeutet, dass all Ihre Ressourcen (HTML-Seiten, JS-code, CSS-stylesheets) nicht ändern, in Reaktion auf Anfragen. Mit Sprachen wie PHP, alle, so erfolgt die Verarbeitung auf der server-Seite; wenn zwei Benutzer-Anfrage, die Ihrem Profil-Seite, sendet der server Ihnen verschiedene Seiten. Dies kann nicht getan werden, auf S3, wenn du also mit PHP, müssen Sie einen echten web-server. Dies vor allem gilt für WordPress, welches benutzt PHP, um Inhalt dienen.

Es ist jedoch immer häufiger für websites, um große JavaScript-Anwendungen. Mit einem Rahmen wie Reagieren, all das bereitgestellt werden muss, ist eine bundle.js Datei. Es ist die Aufgabe des client, nicht den server, um diese Datei ausführen und starten Sie die Anwendung. Anwendungen wie diese gehostet werden kann, auf S3 ohne Probleme. Diese nicht loszuwerden, Ihre backend-entweder—Sie können immer noch Ihre app kommunizieren mit einem API-server und mit der Datenbank kommunizieren, Sie müssen nur zur Authentifizierung von Anfragen von den client. In Kombination mit der AWS-API-Gateway und Lambda, verfügen Sie möglicherweise nicht über die zum ausführen einer einzigen EC2-server.

Werden nicht getäuscht Sie durch die einfachen Installation—für kleine Websites, S3 kann senken Sie Ihre Kosten nach unten, um ein paar Cent auf den dollar, und da sind keine Server zu kümmern, es skaliert perfekt den ganzen Weg bis zu Millionen von Nutzern. Sie zahlen lediglich eine Pauschale für die Bandbreite, die in-und out, sowie alle damit verbundenen Kosten für die Lambda -, RDS -, oder jegliche andere Dienstleistungen, die Sie mit Ihrer app. Auch für größere Unternehmen, die Bereitstellung von Produktions-Anwendungen, hosting von S3 ist eine sehr praktikable und kostensparende option, wenn die app es unterstützen können.

S3 nicht unterstützt HTTPS für statische Webseiten, das wäre ein dealbreaker, aber Sie können es hinter CloudFront AWS (CDN), die neben verbesserten Zwischenspeicherung und Leistung, können Sie eine benutzerdefinierte Domäne mit HTTPS. Es hat sogar eine großzügigere Kostenlose Kontingent für Datentransfer 50 GB anstatt S3 ist 1 GB.

Die Einstellung

Für dieses tutorial eher als die Bereitstellung von einfachen HTML-Seite, wir werden die Bereitstellung der starter-Projekt erstellen-reagieren-app, wie es besser zeigt-aus S3, das wahre Potenzial.

Nach dem ausführen von Garn zu bauen, wir sind Links mit folgenden Vermögenswerte in die /build-Ordner:

Dieser gesamte Ordner kopiert wird über S3. Den Kopf über die S3 Management Console, und klicken Sie auf “Create Bucket.”

Geben Sie einen Namen ein (es muss einzigartig unter allen AWS-Konten), und klicken Sie auf “Weiter”. Sie können schalten Sie die Versionsverwaltung in den Optionen hier, aber es gibt nicht viel anderes zu berücksichtigen. Klicken Sie auf “Weiter”.

Auf dem nächsten Bildschirm, werden Sie wollen, deaktivieren Sie die Option “Alle Blockieren den Zugang der Öffentlichkeit.” Dies ist standardmäßig aktiviert, um zu verhindern, dass Objekte in buckets angezeigt wird, um das offene internet, die machen Ihr Eimer nicht erreichbar. AWS pop-up mit einer Warnung, die sagt, um es wieder einzuschalten, es sei denn, Sie verwenden die “spezifische und verifiziert use cases”, wie zum Beispiel static website hosting. Denn das ist genau das, was wir tun, Sie können dies ignorieren.

Klicken Sie auf “Erstellen” auf den Eimer, und öffnen Sie es.

Können Sie manuell ziehen Sie den Inhalt des HTML-Ordners in den Eimer, aber eine bessere Methode ist die Verwendung des AWS CLI zum synchronisieren der gesamte Ordner bis zu Ihrem Eimer. Der Befehl ist ziemlich einfach:

aws s3 synchronisieren . s3://bucket-Namen

Nun, sollten Sie Ihre Ordner-Inhalt in den Eimer:

Sobald alles synchronisiert ist, können Sie den Eimer zu ermöglichen, website-hosting. Der Registerkarte “Eigenschaften”, aktivieren Sie die Option “Statische Website-Hosting” – option, und wählen Sie Ihre index-Datei. Sie können auch wählen Sie eine Fehler-Datei, um Benutzern eine personalisierte 404.

Dadurch wird die statische website-hosting, aber nicht explizit Lesezugriff. Um das zu tun, müssen Sie die folgenden Eimer Politik unter Berechtigungen – > Eimer-Politik:

{
“Version”:”2012-10-17″,
“Statement”:[{
“Sid”:”PublicReadGetObject”,
“Effect”:”Allow”,
“AUFTRAGGEBER”: “*”,
“Action”:[“s3:GetObject”],
“Resource”:[“arn:aws:s3:::Beispiel-Eimer/*”
]
}
]
}

Dies wird pop-up eine weitere Warnung, die Ihnen mitteilt, dass der öffentliche Zugang ist auf. Können Sie wieder ignorieren.

Ihr Eimer wird nun sichtbar aus der folgenden Endpunkt:

http://BUCKET-NAME.s3-website.REGION.amazonaws.com/

Super!!! Alles ordnungsgemäß funktioniert. Der client fordert die Eimer, die dazu dient, die index.html Datei, die downloads alle benötigten JS-und CSS-assets und macht die Spinnen Reagieren-logo.

Aber diesen Endpunkt offensichtlich nicht benutzerfreundlich, so dass Sie wahrscheinlich wollen, konfigurieren Sie eine benutzerdefinierte Domäne für Ihre S3-Website. Die einfachste Methode ist die Verwendung CloudFront, um Anfragen zu bedienen, das ist der einzige Weg, um HTTPS-Unterstützung sowieso. Wenn Sie nicht möchten, zu verwenden, CloudFront, können Sie eine benutzerdefinierte Domäne mit Route 53-alias zu Ihrem bucket Standard-Endpunkt.

Den Kopf über die CloudFront-Konsole. Wählen Sie “Create Distribution” und wählen Sie “Web” als Typ. Auf dem nächsten Bildschirm unter “Origin Domain Name” wählen Sie Ihren S3-bucket aus der dropdown-Liste. Stellen Sie sicher, überprüfen Sie auch “Umleiten von HTTP zu HTTPS.”

Weiter unten, werden Sie wollen, konfigurieren Sie Ihre domain. Geben Sie in Ihrer alternativen domain-Namen, und wählen Sie “Custom SSL.” Fordern Sie von ACM; es kann bis zu einer halben Stunde, um zu überprüfen, abhängig von Ihrem DNS-Anbieter, aber wenn Sie mit Route 53 können Sie erstellen und überprüfen Sie den Datensatz automatisch innerhalb von wenigen Minuten.

Danach klicken Sie auf “verteilerpaket Erstellen” am unteren Rand, und warten Sie etwa 15 Minuten für CloudFront, um alles nieder. Sobald es fertig ist, werden Sie in der Lage sein besuchen Sie Ihren benutzerdefinierten Domänennamen aus, und sehen Sie Ihre app serviert direkt von S3.

Wenn Sie möchten, um die Versionsverwaltung zu erleichtern, können Sie die Einrichtung einer automatisierten deployment-pipeline mit AWS CodePipeline. Wählen Sie einfach die Bereitstellung auf S3 und AWS bereitstellen von source code updates automatisch, einschließlich der build-Artefakte.