Veröffentliche deine Astro-Website 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 mit AWS Amplify, S3 static website hosting und CloudFront.
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 deine Build-Einstellungen, um sie an den Build-Prozess deines Projekts anzupassen.
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, gibst du nach der Authentifizierung mit deinen AWS-Anmeldeinformationen folgenden Befehl ein: -
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 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.
Um S3 mit Cloudfront zu verbinden, erstellst du eine CloudFront-Distribution mit den folgenden Werten:
- Ursprungsdomäne: Der Endpunkt deiner statischen Website im S3-Bucket. Du findest deinen Endpunkt in den Eigenschaften > Statisches Website-Hosting deines S3-Buckets. Alternativ kannst du deinen S3-Bucket auswählen und auf das Callout klicken, um die Bucket-Adresse durch deinen statischen Bucket-Endpunkt zu ersetzen.
- Viewer-Protokollrichtlinie: „Zu HTTPS umleiten“
Mit dieser Konfiguration wird deine Website über das Cloudfront CDN-Netzwerk bereitgestellt. Die URL deiner CloudFront-Distribution findest du im Bucket unter Distributionen > Domainname.
Wenn du CloudFront mit einem Endpunkt für eine statische S3-Website verbindest, verlässt du dich bei der Zugriffskontrolle auf die S3-Bucket-Richtlinien. Im Abschnitt S3 Hosting statischer Websites findest du weitere Informationen zu Bucket-Richtlinien.
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 jedem Commit 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-Verteilungsdateien ungültig machen, wenn du einen Commit durchführst.
Vergiss nicht,
<DISTRIBUTION_ARN>
und<BUCKET_NAME>
zu ersetzen. Du findest den DISTRIBUTION_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
Community-Ressourcen
Abschnitt betitelt Community-Ressourcen- Bereitstellung von Astro für AWS Amplify
- Bereitstellung von Astro auf AWS Elastic Beanstalk
- Bereitstellung von Astro für Amazon ECS auf AWS Fargate