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
Themen
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
-
Öffnen Sie die CloudFormation-Konsole
. -
Wählen Sie Stack erstellen aus.
-
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.
-
Um die Beispielvorlage hochzuladen und zu validieren, gehen Sie wie folgt vor:
-
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 URLBevor Sie zum nächsten Schritt übergehen, lassen Sie uns einen Blick auf die Vorlage werfen und einige wichtige CloudFormation-Konzepte verstehen.
-
Der Abschnitt
Parametersdeklariert 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.microzulässig:,t3.microt2.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
Resourcesenthä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
WebServerSecurityGroupzur EigenschaftSecurityGroupIdshinzu -
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
WebServerSecurityGroupder logische Name, der der EC2-Sicherheitsgruppenressource zugewiesen ist. Die FunktionRefwird 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
Outputsdefiniert 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 FunktionJoinkönnen Sie die feste Variablehttp://und die VariablePublicDnsNamezu einer einzigen Zeichenkette zusammenfassen, was die Ausgabe der vollständigen URL des Webservers erleichtert.
-
-
-
Wählen Sie Validieren um sicherzustellen, dass der YAML-Code gültig ist, bevor Sie die Vorlage hochladen.
-
Wählen Sie anschließend Vorlage erstellen um die Vorlage zu erstellen und zu einem S3-Bucket hinzuzufügen.
-
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.
-
-
Auf der Seite Stapel erstellen wählen Sie Weiter.
-
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. -
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 denent2.micronicht verfügbar ist, können Sie einet3.micro-Instance unter dem kostenlosen Tier nutzen). -
MeineIP: Geben Sie Ihre aktuelle öffentliche IP-Adresse mit dem Suffix
/32an. Das Suffix/32wird 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.
-
-
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.
-
Ü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
-
Wählen Sie in der CloudFormation-Konsole den Stack
MyTestStackaus der Liste. -
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::IdAktualisieren 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.htmlWenn 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
-
Öffnen Sie die CloudFormation-Konsole
. -
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. -
Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Delete (Löschen).
-
Überwachen Sie den Fortschritt des Stapel-Löschvorgangs auf der Registerkarte Ereignis . Der Status für
MyTestStackwechselt zuDELETE_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
-
Öffnen Sie die Amazon S3-Konsole
. -
Klicken Sie im Navigationsbereich auf der linken Seite der Konsole auf Buckets.
-
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.
-
Bestätigen Sie auf der Seite Bucket leeren, dass Sie den Bucket leeren möchten, indem Sie
permanently deletein das Textfeld eingeben, und wählen Sie dann Leeren. -
Überwachen Sie den Fortschritt des Vorgangs zum Entleeren von Buckets auf der Seite Bucket entleeren: Status).
-
Um zur Bucket-Liste zurückzukehren, wählen Sie Exit (Beenden) aus.
-
Wählen Sie die Option neben dem Namen des Buckets und wählen Sie dann Löschen.
-
Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen des Buckets ein und wählen Sie Bucket löschen.
-
Ü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:
-
Erfahren Sie mehr über Vorlagen, damit Sie Ihre eigenen erstellen können. Weitere Informationen finden Sie unter Arbeiten mit CloudFormation-Vorlagen.
-
Probieren Sie den Workshop Erste Schritte mit CloudFormation
für weitere praktische Übungen zur Erstellung von Vorlagen. -
Eine verkürzte Version von Erste Schritte mit CloudFormation
finden Sie unter Bereitstellen von Anwendungen auf Amazon EC2. Dieses Thema beschreibt das gleiche Szenario der Verwendung eines CloudFormation-Hilfsskripts,, cfn-initzum Booten einer Amazon EC2-Instance.