Veröffentliche deine Astro-Seite auf AWS
AWS ist eine umfangreiche Web-App-Hosting-Plattform, die für die Bereitstellung einer Astro-Seite verwendet werden kann.
Für die Bereitstellung deines Projekts bei AWS musst du die AWS-Konsole verwenden. (Die meisten dieser Aktionen können auch mit der AWS CLI durchgeführt werden). Diese Anleitung führt dich durch die Schritte zur Bereitstellung deiner Website bei AWS und beginnt mit der einfachsten Methode. Anschließend wird gezeigt, wie du zusätzliche Services hinzufügen kannst, um die Kosteneffizienz und Leistung zu verbessern.
AWS Amplify
Abschnitt betitelt AWS AmplifyAWS Amplify ist eine Reihe von speziell entwickelten Tools und Funktionen, mit denen Frontend-Web- und Mobilentwickler schnell und einfach Full-Stack-Anwendungen auf AWS erstellen können.
-
Erstelle ein neues Amplify Hosting Projekt.
-
Verbinde dein Repository mit Amplify.
-
Ändere dein Build-Ausgabeverzeichnis
baseDirectory
in/dist
.
Amplify stellt deine Website automatisch bereit und aktualisiert sie, wenn du einen Commit an dein Repository sendest.
Statisches Website-Hosting mit S3
Abschnitt betitelt Statisches Website-Hosting mit S3S3 ist der Startpunkt jeder Anwendung. Hier werden deine Projektdateien und andere Assets gespeichert. S3 berechnet Gebühren für die Speicherung von Dateien und die Anzahl der Anfragen. Weitere Informationen über S3 findest du in der AWS-Dokumentation.
-
Erstelle einen S3-Bucket mit dem Namen deines Projekts.
Der Bucket-Name sollte weltweit eindeutig sein. Wir empfehlen eine Kombination aus deinem Projektnamen und dem Domainnamen deiner Website.
-
Deaktiviere “Blockieren des gesamten öffentlichen Zugriffs”. Standardmäßig werden alle Buckets von AWS als privat eingestuft. Um sie öffentlich zu machen, musst du das Kontrollkästchen “Blockieren des gesamten öffentlichen Zugriffs” in den Berechtigungen des Buckets deaktivieren.
-
Lade deine erstellten Dateien, die sich in
dist
befinden, in S3 hoch. Du kannst dies manuell in der Konsole tun oder die AWS CLI verwenden. Wenn du die AWS CLI verwendest, kannst du nach der Authentifizierung mit deinen AWS-Anmeldeinformationen folgenden Befehl verwenden: -
Aktualisiere deine Bucket-Richtlinie, um öffentlichen Zugriff zu erlauben. Du findest diese Einstellung unter Berechtigungen > Bucket-Richtlinie des Buckets.
Vergiss nicht,
<BUCKET_NAME>
durch den Namen deines Buckets zu ersetzen. -
Aktiviere das Website-Hosting für deinen Bucket. Du findest diese Einstellung in den Einstellungen > Hosten einer statischen Website des Buckets. Setze dein Index-Dokument auf
index.html
und dein Fehler-Dokument auf404.html
. Schließlich findest du deine neue Website-URL unter Einstellungen > Hosten einer statischen Website im Bucket.Wenn du eine Single-Page-Anwendung (SPA) bereitstellst, setze dein Fehlerdokument auf
index.html
.
S3 mit CloudFront
Abschnitt betitelt S3 mit CloudFrontCloudFront ist ein Webservice, der Content Delivery Network (CDN)-Funktionen bietet. Er wird verwendet, um Inhalte eines Webservers zwischenzuspeichern und an die Endnutzer zu verteilen. CloudFront erhebt Gebühren für die übertragene Datenmenge. Wenn du CloudFront zu deinem S3-Bucket hinzufügst, ist das kostengünstiger und ermöglicht eine schnellere Bereitstellung.
Wir werden CloudFront nutzen, um unseren S3-Bucket zu verlinken und die Dateien unseres Projekts über das globale CDN-Netzwerk von Amazon bereitzustellen. Dadurch werden die Kosten für die Bereitstellung der Projektdateien gesenkt und die Leistung deiner Website erhöht.
S3-Einrichtung
Abschnitt betitelt S3-Einrichtung-
Erstelle einen S3-Bucket mit dem Namen deines Projekts.
Der Bucket-Name sollte weltweit eindeutig sein. Wir empfehlen eine Kombination aus deinem Projektnamen und dem Domainnamen deiner Website.
-
Lade deine erstellten Dateien, die sich in
dist
befinden, in S3 hoch. Du kannst dies manuell in der Konsole tun oder die AWS CLI verwenden. Wenn du die AWS CLI verwendest, kannst du nach der Authentifizierung mit deinen AWS-Anmeldeinformationen folgenden Befehl verwenden: -
Aktualisiere deine Bucket-Richtlinie, um CloudFront Access zu erlauben. Du findest diese Einstellung unter Berechtigungen > Bucket-Richtlinie des Buckets.
Vergiss nicht,
<CLOUDFRONT_OAI_ID>
durch den Namen deiner CloudFront Origin Access Identity ID zu ersetzen. Du findest die CloudFront Origin Access Identity ID nach der Einrichtung von CloudFront unter CloudFront > Origin access identities.
CloudFront-Einrichtung
Abschnitt betitelt CloudFront-Einrichtung- Erstelle eine CloudFront-Veröffentlichung mit den folgenden Werten:
- Origin domain: Dein S3-Bucket
- S3 bucket access: “Ja, OAI verwenden (Bucket kann den Zugriff nur auf CloudFront beschränken)”
- Origin access identity: Eine neue Identität für den Ursprungszugang erstellen
- Viewer - Bucket policy: “Nein, ich werde die Eimerpolitik aktualisieren”
- Viewer protocol policy: “Zu HTTPS umleiten”
- Default root object:
index.html
Mit dieser Konfiguration wird der Zugriff auf deinen S3-Bucket aus dem öffentlichen Internet blockiert und deine Website über das globale CDN-Netzwerk bereitgestellt. Die URL deiner CloudFront-Distribution findest du im Bucket unter Distributionen > Domain name.
Einrichtung von CloudFront-Funktionen
Abschnitt betitelt Einrichtung von CloudFront-FunktionenLeider unterstützt CloudFront standardmäßig kein mehrseitiges Sub-folder/Index
-Routing. Um es zu konfigurieren, verwenden wir CloudFront-Funktionen, um die Anfrage auf das gewünschte Objekt in S3 zu richten.
-
Erstelle eine neue CloudFront-Funktion mit dem folgenden Codeschnipsel. Du findest CloudFront-Funktionen unter CloudFront > Functions.
-
Verknüpfe deine Funktion mit der CloudFront-Distribution. Du findest diese Option in den Settings > Behaviors > Edit > Function associations deiner CloudFront-Distribution.
- Viewer request - Function type: CloudFront-Funktion.
- Viewer request - Function ARN: Wähle die Funktion aus, die du im vorherigen Schritt erstellt hast.
Kontinuierliche Bereitstellung mit GitHub-Actions
Abschnitt betitelt Kontinuierliche Bereitstellung mit GitHub-ActionsEs gibt viele Möglichkeiten, die kontinuierliche Bereitstellung für AWS einzurichten. Eine Möglichkeit für Code, der auf GitHub gehostet wird, ist die Verwendung von GitHub Actions, um deine Website bei jeder Übertragung bereitzustellen.
-
Erstelle in deinem AWS-Konto mit IAM eine neue Richtlinie mit den folgenden Berechtigungen. Mit dieser Richtlinie kannst du erstellte Dateien in deinen S3-Bucket hochladen und die CloudFront-Veröffentlichungs-Dateien ungültig machen, wenn du eine Übertragung durchführst.
Vergiss nicht,
<DISTRIBUTION_ARN>
und<BUCKET_NAME>
zu ersetzen. Du findest den ARN in CloudFront > Distributions > Details. -
Erstelle einen neuen IAM-Benutzer und füge die Richtlinie an den Benutzer an. So erhältst du deinen
AWS_SECRET_ACCESS_KEY
und deineAWS_ACCESS_KEY_ID
. -
Füge diesen Beispielworkflow zu deinem Repository unter
.github/workflows/deploy.yml
hinzu und pushe ihn auf GitHub. Du musstAWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
,BUCKET_ID
undDISTRIBUTION_ID
als “Secrets” zu deinem Repository auf GitHub unter Settings > Secrets > Actions hinzufügen. Klicke auf Neues Repository-Secret, um jedes einzelne hinzuzufügen.Deine
BUCKET_ID
ist der Name deines S3-Buckets. DeineDISTRIBUTION_ID
ist die ID deiner CloudFront-Distribution. Du findest deine CloudFront-Veröffentlichungs-ID unter CloudFront > Distributions> ID