Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Stellen Sie Anwendungen auf Amazon bereit EC2
Sie können CloudFormation es verwenden, um Anwendungen auf EC2 Amazon-Instances automatisch zu installieren, zu konfigurieren und zu starten. Auf diese Weise können Sie auf einfache Weise Bereitstellungen übermitteln und vorhandene Installationen aktualisieren, ohne eine direkte Verbindung mit der Instance herzustellen, was Ihnen viel Zeit und Aufwand sparen kann.
CloudFormation enthält eine Reihe von Hilfsskripten (cfn-init
cfn-signal
,cfn-get-metadata
, undcfn-hup
), die auf basierencloud-init
. Sie rufen diese Hilfsskripte aus Ihren CloudFormation Vorlagen auf, um Anwendungen auf EC2 Amazon-Instances zu installieren, zu konfigurieren und zu aktualisieren, die sich in derselben Vorlage befinden. Weitere Informationen finden Sie in der Referenz zu CloudFormation Hilfsskripten im AWS CloudFormation Template Reference Guide.
Im Tutorial „Erste Schritte“ haben Sie UserData
mithilfe eines einfachen Bash-Skripts einen einfachen Webserver erstellt. Das hat zwar für eine einfache „Hello World“ -Seite funktioniert, aber echte Anwendungen benötigen oft eine anspruchsvollere Konfiguration, darunter:
-
Es wurden mehrere Softwarepakete in der richtigen Reihenfolge installiert.
-
Komplexe Konfigurationsdateien, die mit bestimmten Inhalten erstellt wurden.
-
Dienste wurden gestartet und so konfiguriert, dass sie automatisch ausgeführt werden.
-
Fehlerbehandlung und Validierung des Einrichtungsvorgangs.
CloudFormationDie Hilfsskripte bieten eine robustere und wartungsfreundlichere Methode zur Konfiguration von EC2 Instanzen als grundlegende Bash-Skripte in. UserData
Das cfn-init
Hilfsskript liest Konfigurationsdaten aus den Metadaten Ihrer Vorlage und wendet sie systematisch auf Ihre Instanz an.
In diesem Tutorial erfahren Sie, wie Sie das cfn-init
Hilfsskript verwenden und den Bootstrapping-Prozess überwachen.
Anmerkung
CloudFormation ist kostenlos, aber die EC2 Amazon-Ressourcen, die Sie erstellen, werden Ihnen in Rechnung gestellt. Wenn Sie jedoch noch keine Erfahrung damit haben AWS, können Sie das kostenlose Kontingent
Themen
Voraussetzungen
-
Sie müssen das Erstelle deinen ersten Stack Tutorial abgeschlossen haben oder über gleichwertige Erfahrung mit den CloudFormation Grundlagen verfügen.
-
Sie benötigen Zugriff auf einen Benutzer oder eine Rolle AWS-Konto mit einem IAM-Status, der über Berechtigungen zur Nutzung von Amazon EC2 verfügt CloudFormation, und/oder Administratorzugriff.
-
Sie benötigen eine Virtual Private Cloud (VPC), die Zugriff auf das Internet hat. Für diese Tutorial-Vorlage ist eine Standard-VPC erforderlich, die automatisch mit neueren Versionen AWS-Konten geliefert wird. Wenn Sie keine Standard-VPC haben oder diese gelöscht wurde, finden Sie im Abschnitt zur Fehlerbehebung im Erstelle deinen ersten Stack Tutorial alternative Lösungen.
Bootstrap-Konzepte verstehen
Lassen Sie uns die wichtigsten Konzepte verstehen, die dafür sorgen, dass Bootstrapping funktioniert, bevor wir die Vorlage erstellen.
Das cfn-init
-Hilfsskript
CloudFormation stellt Python-Hilfsskripte bereit, mit denen Sie Software installieren und Dienste auf einer EC2 Amazon-Instance starten können. Das cfn-init
Skript liest Ressourcenmetadaten aus Ihrer Vorlage und wendet die Konfiguration auf Ihre Instance an.
Der Prozess funktioniert wie folgt:
-
Sie definieren die Konfiguration im
Metadata
Abschnitt Ihrer EC2 Ressource. -
Sie rufen
cfn-init
vomUserData
Skript aus an. -
cfn-init
liest die Metadaten und wendet die Konfiguration an. -
Ihre Instanz ist gemäß Ihren Spezifikationen konfiguriert.
Struktur der Metadaten
Die Konfiguration ist in einer bestimmten Struktur innerhalb Ihrer EC2 Instanz definiert.
Resources: EC2Instance: Type: AWS::EC2::Instance Metadata: # Metadata section for the resource AWS::CloudFormation::Init: # Required key that cfn-init looks for config: # Configuration name (you can have multiple) packages: # Install packages files: # Create files commands: # Run commands services: # Start/stop services
Das cfn-init
Skript verarbeitet diese Abschnitte in einer bestimmten Reihenfolge: Pakete, Gruppen, Benutzer, Quellen, Dateien, Befehle und dann Dienste.
Beginnen Sie mit einem einfachen Bootstrap-Beispiel
Beginnen wir mit einem minimalen Bootstrap-Beispiel, das Apache einfach installiert und startet.
Resources: EC2Instance: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: packages: # Install Apache web server yum: httpd: [] services: # Start Apache and enable it to start on boot sysvinit: httpd: enabled: true ensureRunning: true Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType UserData: !Base64 # Script that runs when instance starts Fn::Sub: | #!/bin/bash yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource EC2Instance --region ${AWS::Region}
Dieses einfache Beispiel demonstriert die Kernkonzepte:
-
packages
Abschnitt installiert dashttpd
Paket mityum. Dies funktioniert auf Amazon Linux und anderen Linux-Distributionen, die verwendenyum. -
services
Dieser Abschnitt stellt sicher, dass er automatischhttpd
gestartet und ausgeführt wird. -
UserData
installiert die neuesten Bootstrap-Tools und Aufrufecfn-init
.
Hinzufügen von Dateien und Befehlen
Lassen Sie uns nun unser Beispiel erweitern, indem wir eine benutzerdefinierte Webseite und eine Protokolldatei im /var/log
Verzeichnis auf der EC2 Instanz hinzufügen.
Dateien erstellen
In files
diesem Abschnitt können Sie Dateien mit bestimmten Inhalten auf der Instanz erstellen. Die vertikale Pipe (|
) ermöglicht es Ihnen, einen wörtlichen Textblock (HTML-Code) als Inhalt der Datei (/var/www/html/index.html
) zu übergeben.
files: /var/www/html/index.html: content: | <body> <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1> </body>
Ausführen von Befehlen
commands
In diesem Abschnitt können Sie Shell-Befehle während des Bootstrap-Vorgangs ausführen. Dieser Befehl erstellt eine Protokolldatei /var/log/welcome.txt
auf der EC2 Instanz. Um es anzuzeigen, benötigen Sie ein EC2 Amazon-Schlüsselpaar, das Sie für den SSH-Zugriff verwenden können, und einen IP-Adressbereich, der für die SSH-Verbindung zur Instance verwendet werden kann (hier nicht behandelt).
commands: createWelcomeLog: command: "echo 'cfn-init ran successfully!' > /var/log/welcome.txt"
Netzwerksicherheit hinzufügen
Da wir einen Webserver einrichten, müssen wir zulassen, dass Web-Traffic (HTTP) unsere EC2 Instanz erreicht. Zu diesem Zweck erstellen wir eine Sicherheitsgruppe, die eingehenden Datenverkehr über Port 80 von Ihrer IP-Adresse aus zulässt. EC2 Instanzen müssen außerdem Datenverkehr ins Internet senden, um beispielsweise Paket-Updates zu installieren. Standardmäßig lassen Sicherheitsgruppen den gesamten ausgehenden Datenverkehr zu. Anschließend verknüpfen wir diese Sicherheitsgruppe mithilfe der SecurityGroupIds
Eigenschaft mit unserer EC2 Instance.
WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: Allow HTTP access from my IP address SecurityGroupIngress: - IpProtocol: tcp Description: HTTP FromPort: 80 ToPort: 80 CidrIp: !Ref MyIP
Die komplette Bootstrap-Vorlage
Lassen Sie uns nun alle Teile zusammenfügen. Hier ist die vollständige Vorlage, die alle Konzepte kombiniert, die wir besprochen haben.
AWSTemplateFormatVersion: 2010-09-09 Description: Bootstrap an EC2 instance with Apache web server using cfn-init 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: 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 from my IP address SecurityGroupIngress: - IpProtocol: tcp Description: HTTP FromPort: 80 ToPort: 80 CidrIp: !Ref MyIP WebServer: Type: AWS::EC2::Instance Metadata: AWS::CloudFormation::Init: config: packages: yum: httpd: [] files: /var/www/html/index.html: content: | <body> <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1> </body> commands: createWelcomeLog: command: "echo 'cfn-init ran successfully!' > /var/log/welcome.txt" services: sysvinit: httpd: enabled: true ensureRunning: true Properties: ImageId: !Ref LatestAmiId InstanceType: !Ref InstanceType SecurityGroupIds: - !Ref WebServerSecurityGroup UserData: !Base64 Fn::Sub: | #!/bin/bash yum install -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServer --region ${AWS::Region} Tags: - Key: Name Value: Bootstrap Tutorial Web Server Outputs: WebsiteURL: Value: !Sub 'http://${WebServer.PublicDnsName}' Description: EC2 instance public DNS name
Erstellen Sie den Stack mit der Konsole
Das folgende Verfahren beinhaltet das Hochladen der Beispiel-Stack-Vorlage aus einer Datei. Öffnen Sie einen Texteditor auf Ihrem lokalen Computer und fügen Sie die Vorlage hinzu. Speichern Sie die Datei mit dem Namen samplelinux2stack.template
.
So starten Sie die Stack-Vorlage
-
Melden Sie sich bei https://console.aws.amazon.com/cloudformation
an AWS Management Console und öffnen Sie die AWS CloudFormation Konsole. -
Klicken Sie auf Create stack (Stack erstellen), With new resources (standard) (Mit neuen Ressourcen (Standard)).
-
Unter Vorlage festlegen, wählen Sie Vorlagendatei hochladen aus und wählen Sie dann Datei wählen, um
samplelinux2stack.template
hochzuladen. -
Wählen Sie Weiter aus.
-
Geben
BootstrapTutorialStack
Sie auf der Seite „Stack-Details angeben“ den Stack-Namen ein. -
Gehen Sie unter Parameter wie folgt vor.
-
LatestAmiId: Behalten Sie den Standardwert bei.
-
InstanceType: Wählen Sie entweder t2.micro oder t3.micro als Instance-Typ. EC2
-
MyIP: Geben Sie Ihre öffentliche IP-Adresse mit einem
/32
Suffix ein.
-
-
Wählen Sie zweimal Weiter und dann Senden, um den Stack zu erstellen.
Überwachen Sie den Bootstrap-Prozess
Bootstrap-Prozesse dauern länger als einfache EC2 Starts, da zusätzliche Software installiert und konfiguriert wird.
Um den Bootstrap-Fortschritt zu überwachen
-
Wählen Sie in der CloudFormation Konsole Ihren Stack aus und öffnen Sie den Tab Ereignisse.
-
Halte Ausschau nach dem
WebServer CREATE_IN_PROGRESS
Ereignis. Der Bootstrap-Prozess beginnt, nachdem die Instance gestartet wurde. -
Der Bootstrap-Vorgang dauert in der Regel einige Minuten. Sie werden sehen
WebServer CREATE_COMPLETE
, wann es fertig ist.
Wenn Sie sehen möchten, was während des Bootstrap-Vorgangs passiert, können Sie die Instanzprotokolle überprüfen.
Um Bootstrap-Logs einzusehen (optional)
-
Öffnen Sie die EC2 Konsole
und suchen Sie nach Ihrer Instanz. -
Wählen Sie die Instanz aus und wählen Sie dann Aktionen, Überwachen und Problembehandlung sowie Systemprotokoll abrufen, um den Bootstrap-Fortschritt zu überprüfen.
-
Wenn Sie die Protokolle nicht sofort sehen, warten Sie und aktualisieren Sie die Seite.
Testen Sie den Webserver mit Bootstrapping
Wenn Ihr Stack angezeigt wirdCREATE_COMPLETE
, testen Sie Ihren Webserver.
Um den Webserver zu testen
-
Gehen Sie in der CloudFormation Konsole zur Registerkarte Ausgaben für Ihren Stack.
-
Klicken Sie auf den Wert WebsiteURL, um Ihren Webserver in einem neuen Tab zu öffnen.
-
Sie sollten Ihre benutzerdefinierte Webseite mit der Nachricht sehen.
Congratulations, you have successfully launched the AWS CloudFormation sample
Anmerkung
Wenn die Seite nicht sofort geladen wird, warten Sie eine Minute und versuchen Sie es erneut. Der Bootstrap-Vorgang ist möglicherweise noch abgeschlossen, auch wenn der Stack angezeigt wirdCREATE_COMPLETE
.
Behebung von Bootstrap-Problemen
Wenn Ihr Bootstrap-Prozess fehlschlägt oder Ihr Webserver nicht funktioniert, finden Sie hier häufig auftretende Probleme und Lösungen.
Häufige Probleme
-
Die Stack-Erstellung schlägt fehl — Suchen Sie auf der Registerkarte Ereignisse nach bestimmten Fehlermeldungen.
-
Auf den Webserver kann nicht zugegriffen werden — Stellen Sie sicher, dass Ihre IP-Adresse im
MyIP
Parameter korrekt ist. Denken Sie daran,/32
am Ende anzugeben. -
Der Bootstrap-Prozess schlägt fehl — Die Instanz wird möglicherweise gestartet,
cfn-init
schlägt aber fehl. Überprüfen Sie die Systemprotokolle, wie im Abschnitt Überwachung beschrieben.
Bereinigen von -Ressourcen
Um fortlaufende Gebühren zu vermeiden, können Sie den Stack und seine Ressourcen löschen, um zu bereinigen.
Löschen des Stacks und der entsprechenden Ressourcen
-
Öffnen Sie die CloudFormation-Konsole
. -
Wählen Sie auf der Seite Stacks die Option neben dem Namen des von Ihnen erstellten Stacks (
BootstrapTutorialStack
) aus und klicken Sie dann auf Löschen. -
Wenn Sie zur Bestätigung aufgefordert werden, wählen Sie Delete (Löschen).
-
Überwachen Sie den Fortschritt des Stack-Löschvorgangs auf der Registerkarte Ereignis. Der Status für
BootstrapTutorialStack
wechselt zuDELETE_IN_PROGRESS
. Wenn das Löschen des Stacks CloudFormation abgeschlossen ist, wird der Stapel aus der Liste entfernt.
Nächste Schritte
Herzlichen Glückwunsch! Sie haben erfolgreich gelernt, EC2 Instances mit CloudFormation zu booten. Sie verstehen jetzt:
-
Wie benutzt man
cfn-init
Hilfsskripte -
Wie strukturiert man Metadaten für Bootstrapping
-
Wie installiert man Pakete, erstellt Dateien, führt Befehle aus und verwaltet Dienste
-
Wie kann ich nach Bootstrap-Problemen suchen
Um weiter zu lernen:
-
Erfahren Sie, wie Sie einen Windows Stack booten. Weitere Informationen finden Sie unter Bootstrapping-basierte Stacks Windows CloudFormation .
-
Erkunden Sie komplexere Bootstrap-Szenarien mit mehreren Konfigurationssätzen. Weitere Informationen finden Sie unter cfn-init und AWS::CloudFormation::Initim Template Reference Guide.AWS CloudFormation
-
Erfahren Sie mehr darüber
cfn-signal
, wie Sie den Status des Bootstrap-Abschlusses melden können. Weitere Informationen finden Sie unter cfn-signal im AWS CloudFormation Template Reference Guide.