Bereitstellen von AWS CLI und CloudFormation für die Infrastruktur

In der dunklen Vergangenheit physischer Server wurde die Infrastruktur mit Schraubenziehern und Kabeln in feuchten Kellern bereitgestellt. Diese dunklen Zeiten wurden heller, als öffentliche Cloud-Lösungen begannen, die Vor-Ort-Infrastruktur als bevorzugte Methode zur Bereitstellung und Verwaltung von Servern abzulösen. In diesem Blogbeitrag erfahren Sie, wie Sie Cloud-Lösungen mit AWS CLI und CloudFormation bereitstellen.

Dies ist ein Gastbeitrag von Karl Eriksson, Mitbegründer von Mocki – einem Tool, mit dem Sie in wenigen Minuten Mock-APIs erstellen können.

Wenn Sie eine Umgebung für Ihre Anwendung betreiben, können Sie die Dinge leicht über eine grafische Benutzeroberfläche (GUI) wie die AWS Console verwalten. Aber wenn Sie mehrere Umgebungen wie Entwicklung, Test und Produktion haben, wird es schwieriger. Menschliche Fehler und Zeit spielen eine Rolle. AWS CLI und CloudFormation können helfen.

Sie müssen Ihre Infrastruktur als Code verwalten. In der AWS-Welt erfolgt dies mit CloudFormation-Stacks.

Beim ersten Bereitstellen eines CloudFormation-Stacks erstellt AWS alles von Grund auf neu. Wenn Sie den Stack als Update bereitstellen, erkennt er Änderungen an der Infrastruktur und wendet nur diese Änderungen an.

CloudFormation-Stacks stellen sicher, dass dieselben Änderungen in allen verschiedenen Umgebungen angewendet werden.

CloudFormation: AWS-Infrastruktur als Code

AWS Infrastructure as Code Source: https://aws.amazon.com/cloudformation/

AWS CloudFormation ist ein Tool zum Schreiben und Bereitstellen von Infrastruktur als Code in einer AWS-Umgebung. Die meisten Dienste von AWS werden von CloudFormation unterstützt. Das meiste, was Sie mit der AWS-Konsole erstellen können, wie virtuelle Server, Datenbanken, Lastenausgleicher und Dateispeicher, kann zu einem CloudFormation-Stack hinzugefügt werden. Sobald diese Ressourcen hinzugefügt wurden, können sie von der Befehlszeile oder einem anderen automatisierten Prozess aus bereitgestellt werden.

Bei Updates stellt CloudFormation sicher, dass die Operationen auf effizienteste Weise durchgeführt werden und ändert automatisch Rollbacks durch, wenn etwas schief geht.

Jetzt lernen wir, wie man Infrastruktur mit der AWS CLI und CloudFormation erstellt.

Voraussetzungen

Um dem CloudFormation-Tutorial im Rest dieses Artikels folgen zu können, stellen Sie sicher, dass Sie Folgendes haben:

  • Einen AWS-Account
  • AWS CLI – Erfahren Sie, wie Sie sie hier herunterladen und einrichten können. Sie können bestätigen, dass die CLI erfolgreich eingerichtet wurde, indem Sie den Befehl aws s3 ls ausführen. Wenn der Befehl erfolgreich zurückkehrt, ist alles in Ordnung.

Wenn Sie über mehrere AWS-Profile verfügen, die über die AWS CLI konfiguriert sind, verwenden Sie bitte ein Profil, das für Entwicklungszwecke oder zum Testen geeignet ist, um dieses Tutorial durchzuführen.

Erstellen Ihres ersten CloudFormation-Stacks

Genug Hintergrundinformationen, lassen Sie uns zur Sache kommen und die AWS CLI und CloudFormation verwenden, um einen Stack zu erstellen!

In diesem Beispiel erstellen Sie einen Stack, der die Infrastruktur enthält, die zum Bereitstellen einer statischen Website benötigt wird, die auf dem statischen Dateihosting-Service AWS S3 gehostet wird.

Um loszulegen, erstellen Sie eine neue Datei mit dem Namen template.yaml und füllen Sie sie mit dem unten stehenden Inhalt:

AWSTemplateFormatVersion: 2010-09-09
Description: A simple CloudFormation template
Resources:
    Bucket:
        Type: AWS::S3::Bucket
        Properties:
            BucketName: your-bucket-name # verwenden Sie Ihren eigenen eindeutigen Namen
  • AWSTemplateFormatVersion bestimmt die Formatversion für die Vorlage, damit AWS sie korrekt interpretieren kann, wenn sie bereitgestellt wird.
  • Beschreibung – enthält eine Beschreibung der Vorlage, die in der AWS Console angezeigt wird, sobald Sie sie bereitgestellt haben.
  • Ressourcen – enthält die gesamte Infrastruktur, die Sie zur Vorlage hinzufügen. In diesem Fall werden die Ressourcen einen einfachen S3-Bucket erstellen, der eine statische Website hostet.

Die Eigenschaft BucketName muss eindeutig sein, also versuchen Sie, etwas anderes als Ihren-bucket-namen zu wählen.

Die Stack-Bereitstellung mit AWS CLI und CloudFormation

Jetzt, da Sie eine einfache Vorlage erstellt haben, können Sie sie mithilfe der AWS CLI und CloudFormation in AWS bereitstellen. Verwenden Sie dazu den folgenden Befehl:

aws cloudformation deploy --template-file template.yaml --stack-name static-website

Nach Ausführung des Befehls gehen Sie zur AWS-Konsole und wählen Sie Services → CloudFormation. Dort sollten Sie den Bereitstellungsvorgang sehen. Nach einigen Minuten sollte der Status auf CREATE_COMPLETE stehen. Wenn dies der Fall ist, ist die Bereitstellung abgeschlossen!

Falls es Fehler gibt, können Sie diese im Ereignisprotokoll sehen, wenn Sie die Details Ihres Stacks anzeigen.

Wenn Sie zu ServicesS3 navigieren, sollten Sie nun einen neu erstellten S3-Bucket sehen.

Erstellen der einfachen Website

Wenn Sie einen S3-Bucket haben, um eine Website zu speichern, erstellen Sie eine index.html-Datei, die als Website dient.

Wenn Sie keine eigene Idee haben, können Sie den folgenden Inhalt in Ihrer index.html-Datei verwenden:

<html>
  <body>
    <h1>Static Site Deployed Using CloudFormation</h1>
    <p>Hello! This site was deployed using CloudFormation. Go cloud!</p>
  </body>
</html>

Speichern Sie die index.html-Datei und laden Sie sie über die AWS-Konsole in Ihren S3-Bucket hoch.

Vergewissern Sie sich, dass der Index-Datei öffentlichen Leszugriff hat, da sie für jeden Besucher der Website zugänglich sein wird.

Aktualisieren der Vorlage

Derzeit ist der gerade erstellte S3-Bucket nicht für das Hosting einer Website konfiguriert. Lassen Sie uns das ändern. Sie können die Indexdatei derzeit über die AWS-Konsole herunterladen, sie ist jedoch nicht über das öffentliche Internet zugänglich. Verwenden Sie die AWS CLI und CloudFormation, um die Konfiguration zu ändern und das statische Website-Hosting zu aktivieren.

Ändern Sie die Datei template.yaml wie folgt, um dies zu ermöglichen. Im Folgenden stellen wir Ihnen einige neue Eigenschaften unseres Templates vor.

AWSTemplateFormatVersion: 2010-09-09
Description: A simple CloudFormation template
Resources:
    Bucket:
        Type: AWS::S3::Bucket
        Properties:
            BucketName: your-bucket-name # Verwenden Sie Ihren eigenen eindeutigen Namen
            AccessControl: PublicRead
            WebsiteConfiguration:
                IndexDocument: index.html
Outputs:
    WebsiteURL:
        Value: !GetAtt [Bucket, WebsiteURL]
        Description: URL for website hosted on S3
  • AccessControl – legt die Zugriffsrechte für den S3-Bucket auf öffentliches Lesen fest, damit jeder Benutzer, der die Website besucht, die Datei index.html sehen kann
  • WebsiteConfiguration – konfiguriert den S3-Bucket so, dass er als Website fungiert, die die hochgeladene Datei index.html bereitstellt, wenn Benutzer die Bucket-URL aufrufen
  • Outputs – kann verschiedene Eigenschaften für Ressourcen sein, die Teil des Stacks sind. In obigem Beispiel ist die WebsiteURL die Stack-Ausgabe. Wenn Sie das Template erneut bereitstellen, sollten Sie die Website-URL als Ausgabe in der AWS CloudFormation-Konsole sehen.

Führen Sie nun die Änderungen am vorhandenen Stack mit demselben Befehl wie im vorherigen Schritt durch:

aws cloudformation deploy --template-file template.yaml --stack-name static-website

Um das Ergebnis zu bestätigen, navigieren Sie zur CloudFormation-Konsole. Nach einigen Minuten sollten Sie feststellen, dass der Stack den Status UPDATE_COMPLETE hat. Wenn der Stack diesen Zustand erreicht hat, gehen Sie zum Tab Outputs, wo Sie die WebsiteUrl als Ausgabe in der Vorlage sehen sollten.

Klicken Sie auf die bereitgestellte URL und Sie sollten Ihre Website im Browser sehen.

Herzlichen Glückwunsch! Mit der AWS CLI und CloudFormation haben Sie jetzt Ihren ersten Stack mit Infrastructure as Code bereitgestellt! An diesem Punkt können Sie Ihre Vorlagendatei weiter bearbeiten, um neue Änderungen bereitzustellen oder eine neue Vorlage gemäß Ihren Anforderungen zu erstellen.

Zusammenfassung

In diesem Tutorial haben Sie das Konzept von Infrastructure as Code und die Vorteile gegenüber der manuellen Bereitstellung von Infrastruktur kennengelernt. Mit dem Ansatz von Infrastructure as Code und der Verwendung von AWS CLI und CloudFormation haben Sie einen Stack bereitgestellt, um eine statische Website zu erstellen.

Mit den in diesem Tutorial gelernten Prinzipien können Sie ein produktionsbereites System vollständig mit CloudFormation bereitstellen.

Weitere Informationen

Wenn Sie mehr über Infrastructure as Code als Phänomen erfahren möchten, schauen Sie sich Infrastructure as Code in the Real World von HashiCorp an.

Wenn Sie mehr darüber erfahren möchten, wie Sie CloudFormation in Ihren Entwicklungsprozess integrieren und Ihre gesamte Infrastruktur mit CloudFormation verwalten können, sollten Sie sich unbedingt ansehen:

Viel Glück bei Ihrer Reise, indem Sie Ihre gesamte Infrastruktur mit Infrastruktur als Code in AWS bereitstellen!

Source:
https://adamtheautomator.com/aws-cli-and-cloudformation/