Erstellen Sie Ihren ersten Stapel - AWS CloudFormation

Erstellen Sie Ihren ersten Stapel

Dieses Thema führt Sie durch die Erstellung Ihres ersten CloudFormation-Stacks unter Verwendung des AWS-Managementkonsole. In diesem Tutorial lernen Sie, wie Sie grundlegende AWS-Ressourcen bereitstellen, Stack-Ereignisse überwachen und Ausgaben erzeugen.

In diesem Beispiel ist die CloudFormation-Vorlage in YAML geschrieben. YAML ist ein von Menschen lesbares Format, das häufig zur Definition von Infrastruktur als Code verwendet wird. Wenn Sie mehr über CloudFormation erfahren, werden Sie vielleicht auch auf andere Vorlagen im JSON-Format stoßen, aber für dieses Tutorial haben wir uns wegen der besseren Lesbarkeit für YAML entschieden.

Anmerkung

CloudFormation ist kostenlos, aber die von Ihnen erstellten Amazon EC2- und Amazon S3-Ressourcen werden Ihnen in Rechnung gestellt. Wenn Sie jedoch neu bei AWSsind, können Sie die Vorteile des Free Tier nutzen, um die Kosten während dieses Lernprozesses zu minimieren oder zu vermeiden.

Voraussetzungen

  • Sie müssen Zugang zu einem AWS-Konto mit einem IAM-Benutzer oder einer IAM-Rolle haben, der/die über die Berechtigung zur Nutzung von Amazon EC2, Amazon S3 und CloudFormation oder über einen administrativen Benutzerzugang verfügt.

  • Sie müssen über eine Virtual Private Cloud (VPC) verfügen, die Zugang zum Internet hat. Diese exemplarische Vorlage erfordert eine Standard-VPC, die automatisch mit newer AWS-Kontengeliefert wird. Wenn Sie keine Standard-VPC haben oder diese gelöscht wurde, finden Sie im Abschnitt zur Fehlerbehebung in diesem Thema alternative Lösungen.

Erstellen Sie einen CloudFormation Stack mit der Konsole

So erstellen Sie einen Hello world CloudFormation Stack mit der Konsole
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie Stack erstellen aus.

  3. Wählen Sie auf der Seite Stack erstellen die Option Von Infrastructure Composer erstellenund dann In Infrastructure Composer erstellen. Dies führt Sie zu Infrastructure Composer im CloudFormation-Konsolenmodus, wo Sie die Beispielvorlage hochladen und validieren können.

  4. Um die Beispielvorlage hochzuladen und zu validieren, gehen Sie wie folgt vor:

    1. Choose Template. Kopieren Sie dann die folgende CloudFormation-Vorlage und fügen Sie sie in den Vorlageneditor ein:

      AWSTemplateFormatVersion: 2010-09-09 Description: CloudFormation Template for WebServer with Security Group and EC2 Instance Parameters: LatestAmiId: Description: The latest Amazon Linux 2 AMI from the Parameter Store Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' InstanceType: Description: WebServer EC2 instance type Type: String Default: t2.micro AllowedValues: - t3.micro - t2.micro ConstraintDescription: must be a valid EC2 instance type. MyIP: Description: Your IP address in CIDR format (e.g. 203.0.113.1/32). Type: String MinLength: '9' MaxLength: '18' Default: 0.0.0.0/0 AllowedPattern: '^(\d{1,3}\.){3}\d{1,3}\/\d{1,2}$' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x. Resources: WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow HTTP access via my IP address SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: !Ref MyIP WebServer: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: !Base64 | #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html Outputs: WebsiteURL: Value: !Join - '' - - http:// - !GetAtt WebServer.PublicDnsName Description: Website URL

      Bevor Sie zum nächsten Schritt übergehen, lassen Sie uns einen Blick auf die Vorlage werfen und einige wichtige CloudFormation-Konzepte verstehen.

      • Der Abschnitt Parameters deklariert Werte, die bei der Erstellung des Stapels an die Vorlage übergeben werden können. Später in der Vorlage angegebene Ressourcen verweisen auf diese Werte und verwenden die Daten. Parameter sind eine effektive Möglichkeit, Informationen anzugeben, die Sie nicht in der Vorlage selbst speichern möchten. Sie sind auch eine Möglichkeit, Informationen anzugeben, die für die spezifische Anwendung oder Konfiguration, die Sie bereitstellen, einzigartig sein könnten.

      • Die Vorlage definiert die folgenden Parameter:

        • LatestAmiId- Ruft die neueste Amazon Linux 2 AMI ID aus dem AWS Systems Manager Parameter Store ab.

        • InstanceType- Ermöglicht die Auswahl des EC2-Instancetyps (Standard:,t2.micro zulässig:,t3.micro t2.micro).

        • MyIP- Gibt den IP-Adressbereich für den HTTP-Zugriff an (Standard: 0.0.0.0/0, was den Zugriff von jeder IP erlaubt).

      • Der Abschnitt Resources enthält die Definitionen der AWS Ressourcen, die Sie mit der Vorlage erstellen möchten. Resourcendeklarationen stellen eine effiziente Möglichkeit dar, alle diese Konfigurationseinstellungen gleichzeitig anzugeben. Wenn Sie Ressourcendeklarationen in eine Vorlage aufnehmen, können Sie alle deklarierten Ressourcen erstellen und konfigurieren, indem Sie diese Vorlage zur Erstellung eines Stapels verwenden. Sie können auch neue Stapel mit der gleichen Vorlage erstellen, um identische Konfigurationen von Ressourcen zu starten.

      • Diese-Vorlage erstellt die folgenden Ressourcen:

        • WebServerSecurityGroup- Eine EC2-Sicherheitsgruppe, die eingehenden HTTP-Verkehr auf Port 80 aus dem angegebenen IP-Bereich zulässt.

        • WebServer- Eine EC2-Instance mit der folgenden Konfiguration:

          • Verwendet das neueste Amazon Linux 2 AMI

          • Wendet den ausgewählten Instancetyp an

          • Fügt die Eigenschaft WebServerSecurityGroup zur Eigenschaft SecurityGroupIds hinzu

          • Enthält ein Skript mit Benutzerdaten zur Installation von Apache HTTP Server

      • Am Anfang jeder Ressourcen- und Parameterdeklaration wird ein logischer Name angegeben. Zum Beispiel ist WebServerSecurityGroup der logische Name, der der EC2-Sicherheitsgruppenressource zugewiesen ist. Die Funktion Ref wird dann verwendet, um in anderen Teilen der Vorlage auf Ressourcen und Parameter über ihre logischen Namen zu verweisen. Wenn eine Ressource auf eine andere Ressource verweist, entsteht eine Abhängigkeit zwischen ihnen.

      • Der Abschnitt Outputs definiert benutzerdefinierte Werte, die nach der Erstellung des Stacks zurückgegeben werden. Sie können die Ausgabewerte verwenden, um Informationen aus den Ressourcen im Stapel zurückzugeben, wie beispielsweise Ressourcenbezeichner oder URLs.

      • Die Vorlage definiert eine Ausgabe:

        • WebsiteURL- Die URL des bereitgestellten Webservers, die unter Verwendung des öffentlichen DNS-Namens der EC2-Instance erstellt wird. Mit der Funktion Join können Sie die feste Variable http:// und die Variable PublicDnsName zu einer einzigen Zeichenkette zusammenfassen, was die Ausgabe der vollständigen URL des Webservers erleichtert.

    2. Wählen Sie Validieren um sicherzustellen, dass der YAML-Code gültig ist, bevor Sie die Vorlage hochladen.

    3. Wählen Sie anschließend Vorlage erstellen um die Vorlage zu erstellen und zu einem S3-Bucket hinzuzufügen.

    4. Notieren Sie sich in dem sich öffnenden Dialogfenster den Namen des S3-Buckets, damit Sie ihn später löschen können. Wählen Sie dann Bestätigen und gehen Sie weiter zu CloudFormation. Dies führt Sie zur CloudFormation-Konsole, in der nun der S3-Pfad zu Ihrer Vorlage angegeben ist.

  5. Auf der Seite Stapel erstellen wählen Sie Weiter.

  6. Geben Sie auf der Seite Stapeldetails angeben einen Namen in das Feld Stapelname ein. Der Stack-Name darf keine Leerzeichen enthalten. Wählen Sie für dieses Beispiel MyTestStack.

  7. Unter Parametergeben Sie die Parameterwerte wie folgt an:

    • LatestAmiId: Dies ist standardmäßig auf das neueste Amazon Linux 2 AMI eingestellt.

    • InstanceType: Wählen Sie entweder t2.micro oder t3.micro für den EC2-Instancetyp.

      Anmerkung

      Wenn Sie neu bei AWSsind, können Sie mit dem kostenlosen Tier eine t2.micro-Instance starten und 12 Monate lang kostenlos nutzen (in Regionen, in denen t2.micro nicht verfügbar ist, können Sie eine t3.micro-Instance unter dem kostenlosen Tier nutzen).

    • MeineIP: Geben Sie Ihre aktuelle öffentliche IP-Adresse mit dem Suffix /32 an. Das Suffix /32 wird in der CIDR-Notation verwendet, um anzugeben, dass eine einzelne IP-Adresse erlaubt ist. Das bedeutet im Wesentlichen, dass Sie den Datenverkehr zu und von dieser bestimmten IP-Adresse zulassen, und keine anderen.

  8. Wählen Sie zweimal Weiter um zur Seite Überprüfen und erstellen zu gelangen. Für dieses Tutorial können Sie die Standardeinstellungen auf der Seite Stack-Optionen konfigurieren so belassen, wie sie sind.

  9. Überprüfen Sie die Informationen für den Stack. Wenn Sie mit den Einstellungen zufrieden sind, klicken Sie auf Submit (Absenden).

Stack-Erstellung überwachen

Nachdem Sie Submitgewählt haben, beginnt CloudFormation mit der Erstellung der Ressourcen, die in der Vorlage angegeben sind. Ihr neuer Stack, MyTestStack, wird in der Liste im oberen Bereich der CloudFormation-Konsole angezeigt. Sein Status sollte CREATE_IN_PROGRESSsein. Sie können den detaillierten Status für einen Stack anzeigen, indem Sie die entsprechenden Ereignisse anzeigen.

Anzeigen der Ereignisse für den Stack
  1. Wählen Sie in der CloudFormation-Konsole den Stack MyTestStack aus der Liste.

  2. Wählen Sie im Detailbereich des Stacks die Registerkarte Events aus.

    Die Konsole aktualisiert die Ereignisliste alle 60 Sekunden automatisch mit den neuesten Ereignissen.

Auf der Registerkarte Events wird jeder wichtige Schritt bei der Erstellung des Stacks sortiert nach dem Zeitpunkt jedes Ereignisses angezeigt, wobei die neuesten Ereignisse oben angezeigt werden.

Das erste Ereignis (unten in der Ereignisliste) ist der Beginn des Prozesses zum Erstellen des Stacks:

2024-12-23 18:54 UTC-7 MyTestStack CREATE_IN_PROGRESS User initiated

Es folgen Ereignisse, die den Beginn und den Abschluss der Erstellung jeder Ressource darstellen. Die Erstellung der EC2-Instance führt z. B. zu den folgenden Einträgen:

2024-12-23 18:59 UTC-7 WebServer CREATE_COMPLETE

2024-12-23 18:54 UTC-7 WebServer CREATE_IN_PROGRESS Resource creation initiated

Das CREATE_IN_PROGRESS-Ereignis wird protokolliert, wenn CloudFormation berichtet, dass mit der Erstellung der Ressource begonnen wurde. Das CREATE_COMPLETE-Ereignis wird protokolliert, wenn die Ressource erfolgreich erstellt wurde.

Wenn CloudFormation den Stack erfolgreich erstellt hat, wird oben auf der Registerkarte Events das folgende Ereignis angezeigt:

2024-12-23 19:17 UTC-7 MyTestStack CREATE_COMPLETE

Wenn CloudFormation eine Ressource nicht erstellen kann, meldet es ein CREATE_FAILED-Ereignis, setzt den Stack standardmäßig zurück und löscht alle Ressourcen, die erstellt wurden. In der Spalte Status Reason wird die Ursache des Fehlers angezeigt.

Nachdem der Stack erstellt wurde, können Sie auf die Registerkarte Ressourcen gehen, um die von Ihnen erstellte EC2-Instance und Sicherheitsgruppe anzuzeigen.

Testen Sie den Webserver

Nachdem der Stack erfolgreich erstellt wurde, wechseln Sie in der CloudFormation-Konsole auf die Registerkarte Outputs . Suchen Sie das Feld WebsiteURL . Diese enthält die öffentliche URL Ihrer EC2-Instance.

Öffnen Sie einen Browser und gehen Sie zu der unter WebsiteURLaufgeführten URL. Sie sollten eine einfache "Hello World!"-Meldung im Browser sehen.

Dies bestätigt, dass Ihre EC2-Instance den Apache HTTP Server ausführt und eine einfache Webseite bereitstellt.

Fehlerbehebung

Wenn bei der Stack-Erstellung ein Rollback auftritt, kann dies an einem fehlenden VPC liegen. Hier erfahren Sie, wie Sie dieses Problem beheben können.

Keine Standard-VPC verfügbar

Die Vorlage in dieser Anleitung erfordert eine Standard-VPC. Wenn Ihre Stack-Erstellung aufgrund von Fehlern bei der VPC- oder Subnetz-Verfügbarkeit fehlschlägt, haben Sie möglicherweise keine Standard-VPC in Ihrem Konto. Ihnen stehen folgende Optionen zur Verfügung:

  • Erstellen einer neuen Standard-VPC- Sie können eine neue Standard-VPC über die Amazon VPC-Konsole erstellen. Eine Anleitung finden Sie unter Erstellen einer Standard-VPC im Amazon VPC-Benutzerhandbuch.

  • Ändern Sie die Vorlage, um ein Subnetz anzugeben- Wenn Sie eine nicht standardmäßige VPC haben, können Sie die Vorlage ändern, um die VPC- und Subnetz-IDs explizit anzugeben. Fügen Sie der Vorlage den folgenden Parameter hinzu:

    SubnetId: Description: The subnet ID to launch the instance into Type: AWS::EC2::Subnet::Id

    Aktualisieren Sie dann die Ressource WebServer, um die Subnetz-ID aufzunehmen:

    WebServer: Type: AWS::EC2::Instance Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup SubnetId: !Ref SubnetId UserData: !Base64 | #!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<html><body><h1>Hello World!</h1></body></html>" > /var/www/html/index.html

    Wenn Sie den Stack erstellen, müssen Sie ein Subnetz angeben, das über einen Internetzugang verfügt, damit der Webserver erreichbar ist.

Bereinigen

Um sicherzustellen, dass Ihnen keine Gebühren für nicht gewünschte Dienste berechnet werden, können Sie den Stack und die entsprechenden Ressourcen löschen. Sie können auch den S3-Bucket löschen, in dem die Vorlage des Stacks gespeichert ist.

Löschen des Stacks und der entsprechenden Ressourcen
  1. Öffnen Sie die CloudFormation-Konsole.

  2. Wählen Sie auf der Seite Stapel die Option neben dem Namen des von Ihnen erstellten Stapels (MyTestStack) und wählen Sie dann Löschen.

  3. Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Delete (Löschen).

  4. Überwachen Sie den Fortschritt des Stapel-Löschvorgangs auf der Registerkarte Ereignis . Der Status für MyTestStack wechselt zu DELETE_IN_PROGRESS. Wenn CloudFormation die Löschung des Stacks abgeschlossen hat, dann wird der Stack aus der Liste entfernt.

Wenn Sie die Arbeit mit der Beispielvorlage beendet haben und Ihren Amazon S3-Bucket nicht mehr benötigen, löschen Sie ihn. Bevor Sie einen Bucket löschen können, müssen Sie ihn zunächst leeren. Wenn Sie einen Bucket leeren, werden alle darin enthaltenen Objekte gelöscht.

So leeren und löschen Sie den Amazon S3-Bucket
  1. Öffnen Sie die Amazon S3-Konsole.

  2. Klicken Sie im Navigationsbereich auf der linken Seite der Konsole auf Buckets.

  3. Wählen Sie in der Liste Buckets die Option neben dem Namen des Buckets, den Sie für dieses Tutorial erstellt haben, und wählen Sie dann Leer.

  4. Bestätigen Sie auf der Seite Bucket leeren, dass Sie den Bucket leeren möchten, indem Sie permanently delete in das Textfeld eingeben, und wählen Sie dann Leeren.

  5. Überwachen Sie den Fortschritt des Vorgangs zum Entleeren von Buckets auf der Seite Bucket entleeren: Status).

  6. Um zur Bucket-Liste zurückzukehren, wählen Sie Exit (Beenden) aus.

  7. Wählen Sie die Option neben dem Namen des Buckets und wählen Sie dann Löschen.

  8. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen des Buckets ein und wählen Sie Bucket löschen.

  9. Überwachen Sie in der Liste Buckets den Fortschritt des Löschvorgangs für den Bucket. Wenn Amazon S3 die Löschung des Buckets abgeschlossen hat, entfernt es den Bucket aus der Liste.

Nächste Schritte

Herzlichen Glückwunsch! Sie haben erfolgreich einen Stack erstellt, seine Erstellung überwacht und seine Ausgabe verwendet.

Um weiter zu lernen: