Erste Schritte - AWS CloudFormation

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.

Erste Schritte

Mit der richtigen Vorlage können Sie gleichzeitig alle AWS Ressourcen bereitstellen, die Sie für eine Anwendung benötigen. In diesem Abschnitt untersuchen Sie eine Vorlage, die die Ressourcen für einen WordPress Blog deklariert, einen WordPress Blog als Stack erstellt, den Stack-Erstellungsprozess überwacht, die Ressourcen auf dem Stack untersucht und dann den Stack löscht. Sie verwenden die AWS Management Console , um diese Aufgaben auszuführen.

Schritt 1: Wählen Sie eine Vorlage

Zunächst benötigen Sie eine Vorlage, in der die Ressourcen angegeben werden, die Ihr Stack enthalten soll. Für diesen Schritt verwenden Sie eine Beispielvorlage, die schon vorbereitet ist. Die Beispielvorlage erstellt einen grundlegenden WordPress Blog, der eine einzelne Amazon EC2-Instance mit einer lokalen MySQL-Datenbank zur Speicherung verwendet. Die Vorlage erstellt außerdem eine Amazon EC2-Sicherheitsgruppe zum Steuern von Firewall-Einstellungen für die Amazon EC2-Instance.

Wichtig

AWS CloudFormation ist kostenlos, aber die AWS Ressourcen, die CloudFormation erstellt, sind live (und werden nicht in einer Sandbox ausgeführt). Es fallen die standardmäßigen Nutzungsgebühren für diese Ressourcen an, bis sie von Ihnen in der letzten Aufgabe in diesem Tutorial beendet werden. Die Gesamtgebühren sind minimal. Informationen darüber, wie Sie Kosten minimieren können, finden Sie unter http://aws.amazon.com/free/.

Anzeigen der Vorlage
  • Sie können die JSON- oder YAML WordPress -Beispielvorlage anzeigen. Sie müssen sie nicht herunterladen, da Sie die Vorlagen-URL zu einem späteren Zeitpunkt in diesem Handbuch verwenden. Weitere Informationen zu den Vorlagenformaten finden Sie unter AWS CloudFormation-Vorlagenformate.

Eine Vorlage ist eine JSON- oder YAML-Textdatei, die die Konfigurationsinformationen zu den AWS Ressourcen enthält, die Sie im Stack erstellen möchten. Bei dieser schrittweisen Anleitung enthält die Beispielvorlage sechs übergeordnete Abschnitte: AWSTemplateFormatVersion, Description, Parameters, Mappings, Resources und Outputs. Allerdings wird nur der Abschnitt Resources benötigt.

Der Abschnitt Ressourcen enthält die Definitionen der AWS Ressourcen, die Sie mit der Vorlage erstellen möchten. Jede Ressource wird separat aufgelistet und gibt die zum Erstellen der jeweiligen Ressourcen erforderlichen Eigenschaften an. Die folgende Ressourcendeklaration ist die Konfiguration für die EC2-Instance, die in diesem Beispiel den logischen Namen WebServer besitzt:

Beispiel JSON
"Resources" : { ... "WebServer": { "Type" : "AWS::EC2::Instance", "Properties": { "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" }, { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] }, "InstanceType" : { "Ref" : "InstanceType" }, "SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ], "KeyName" : { "Ref" : "KeyName" }, "UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xe\n", "yum update -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServer ", " --configsets wordpress_install ", " --region ", { "Ref" : "AWS::Region" }, "\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServer ", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]}} }, ... }, ... "WebServerSecurityGroup" : { "Type" : "AWS::EC2::SecurityGroup", "Properties" : { "GroupDescription" : "Enable HTTP access via port 80 locked down to the load balancer + SSH access", "SecurityGroupIngress" : [ {"IpProtocol" : "tcp", "FromPort" : 80, "ToPort" : 80, "CidrIp" : "0.0.0.0/0"}, {"IpProtocol" : "tcp", "FromPort" : 22, "ToPort" : 22, "CidrIp" : { "Ref" : "SSHLocation"}} ] } }, ... },
Beispiel YAML
Resources: ... WebServer: Type: AWS::EC2::Instance Properties: ImageId: !FindInMap [AWSRegionArch2AMI, !Ref 'AWS::Region', !FindInMap [AWSInstanceType2Arch, !Ref InstanceType, Arch]] InstanceType: Ref: InstanceType KeyName: Ref: KeyName SecurityGroups: - Ref: WebServerSecurityGroup UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackId} --resource WebServer --configsets wordpress_install --region ${AWS::Region} /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackId} --resource WebServer --region ${AWS::Region} ... ... WebServerSecurityGroup: Type: AWS::EC2::SecurityGroup Properties: GroupDescription: "Enable HTTP access via port 80 locked down to the load balancer + SSH access" SecurityGroupIngress: - CidrIp: 0.0.0.0/0 FromPort: 80 IpProtocol: tcp ToPort: 80 - CidrIp: !Ref SSHLocation FromPort: 22 IpProtocol: tcp ToPort: 22 ...

Wenn Sie schon einmal EC2-Instances erstellt haben, können Sie Eigenschaften erkennen, wie z. B. ImageId, InstanceType und KeyName, welche die Konfiguration der Instance bestimmen. Resourcendeklarationen stellen eine effiziente Möglichkeit dar, alle diese Konfigurationseinstellungen gleichzeitig anzugeben. Wenn Sie Ressourcendeklarationen in eine Vorlage einfügen, können Sie all die deklarierten Ressourcen mithilfe der Vorlage zum Erstellen eines Stacks erstellen und konfigurieren. Erstellen Sie ein neues Stack, das die gleiche Vorlage verwendet, um die gleiche Ressourcenkonfiguration zu starten.

Die Ressourcendeklaration beginnt mit einer Zeichenfolge, die den logischen Namen für die Ressource angibt. Wie Sie sehen, kann der logische Namen verwendet werden, um auf Ressourcen innerhalb der Vorlage zu verweisen.

Sie verwenden den Abschnitt Parameter, um Werte zu deklarieren, die bei der Erstellung des Stacks an die Vorlage übergeben werden können. Mit Parametern können auch vertrauliche Informationen, z. B. Benutzernamen und Kennwörter, effektiv angegeben werden, die Sie nicht in der Vorlage selbst speichern möchten. Sie bieten auch die Möglichkeit, Informationen anzugeben, die für die bestimmte Anwendung oder Konfiguration, die Sie bereitstellen, eindeutig sein können, z. B. einen Domain-Namen oder Instance-Typen. Wenn Sie den WordPress Stack später in diesem Abschnitt erstellen, wird der in der Vorlage deklarierte Parametersatz auf der Seite Details angeben des Assistenten zum Erstellen von Stacks angezeigt, auf der Sie die Parameter angeben können, bevor Sie den Stack erstellen.

Die folgenden Parameter werden in der Vorlage verwendet , um Werte anzugeben, die in Eigenschaften der EC2-Instance verwendet werden:

Beispiel JSON
"Parameters" : { ... "KeyName": { "Description" : "Name of an existing EC2 KeyPair to enable SSH access to the instances", "Type": "AWS::EC2::KeyPair::KeyName", "ConstraintDescription" : "must be the name of an existing EC2 KeyPair." }, "InstanceType" : { "Description" : "WebServer EC2 instance type", "Type" : "String", "Default" : "t2.small", "AllowedValues": [ "t1.micro", "t2.nano", "t2.micro", "t2.small", "t2.medium", "t2.large", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "m3.medium", "m3.large", "m3.xlarge", "m3.2xlarge", "m4.large", "m4.xlarge", "m4.2xlarge", "m4.4xlarge", "m4.10xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.xlarge", "c3.2xlarge", "c3.4xlarge", "c3.8xlarge", "c4.large", "c4.xlarge", "c4.2xlarge", "c4.4xlarge", "c4.8xlarge", "g2.2xlarge", "g2.8xlarge", "r3.large", "r3.xlarge", "r3.2xlarge", "r3.4xlarge", "r3.8xlarge", "i2.xlarge", "i2.2xlarge", "i2.4xlarge", "i2.8xlarge", "d2.xlarge", "d2.2xlarge", "d2.4xlarge", "d2.8xlarge", "hi1.4xlarge", "hs1.8xlarge", "cr1.8xlarge", "cc2.8xlarge", "cg1.4xlarge" ], "ConstraintDescription" : "must be a valid EC2 instance type." }, ...
Beispiel YAML
Parameters: ... KeyName: ConstraintDescription: must be the name of an existing EC2 KeyPair. Description: Name of an existing EC2 KeyPair to enable SSH access to the instances Type: AWS::EC2::KeyPair::KeyName InstanceType: AllowedValues: - t1.micro - t2.nano - t2.micro - t2.small - t2.medium - t2.large - m1.small - m1.medium - m1.large - m1.xlarge - m2.xlarge - m2.2xlarge - m2.4xlarge - m3.medium - m3.large - m3.xlarge - m3.2xlarge - m4.large - m4.xlarge - m4.2xlarge - m4.4xlarge - m4.10xlarge - c1.medium - c1.xlarge - c3.large - c3.xlarge - c3.2xlarge - c3.4xlarge - c3.8xlarge - c4.large - c4.xlarge - c4.2xlarge - c4.4xlarge - c4.8xlarge - g2.2xlarge - g2.8xlarge - r3.large - r3.xlarge - r3.2xlarge - r3.4xlarge - r3.8xlarge - i2.xlarge - i2.2xlarge - i2.4xlarge - i2.8xlarge - d2.xlarge - d2.2xlarge - d2.4xlarge - d2.8xlarge - hi1.4xlarge - hs1.8xlarge - cr1.8xlarge - cc2.8xlarge - cg1.4xlarge ConstraintDescription: must be a valid EC2 instance type. Default: t2.small Description: WebServer EC2 instance type Type: String ...

Sie sehen in der WebServer-Ressourcendeklaration, dass die KeyName- Eigenschaft mit dem KeyName-Parameter angegeben ist:

Beispiel JSON
"WebServer" : { "Type": "AWS::EC2::Instance", "Properties": { "KeyName" : { "Ref" : "KeyName" }, ... } },
Beispiel YAML
WebServer: Type: AWS::EC2::Instance Properties: KeyName: Ref: KeyName ...

Die Klammern enthalten einen Aufruf der Ref-Funktion mit KeyName als Eingabe. Die Ref-Funktion gibt den Wert des Objekts zurück, auf das sie sich bezieht. In diesem Fall legt die Ref-Funktion die KeyName-Eigenschaft auf den Wert fest, der für KeyName angegeben wurde, als der Stack erstellt wurde.

Die Ref-Funktion kann auch eine Eigenschaft einer Ressource auf den Wert einer anderen Ressource festlegen. Die Ressourcendeklaration WebServer enthält beispielsweise die folgende Eigenschaftendeklaration:

Beispiel JSON
"WebServer" : { "Type": "AWS::EC2::Instance", "Properties": { ... "SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ], ... } },
Beispiel YAML
WebServer: Type: AWS::EC2::Instance Properties: SecurityGroups: - Ref: WebServerSecurityGroup ...

Die SecurityGroups-Eigenschaft besitzt eine Liste von EC2-Sicherheitsgruppen. Die Ref-Funktion hat die Eingabe WebServerSecurityGroup, bei der es sich um den logischen Namen einer Sicherheitsgruppe in der Vorlage handelt, und fügt den Namen WebServerSecurityGroup der SecurityGroups-Eigenschaft hinzu.

Sie finden in der Vorlage auch einen Mappings-Abschnitt. Sie verwenden Zuweisungen, um bedingte Werte zu deklarieren, die auf ähnliche Weise wie eine Such-Tabellen-Anweisung geprüft werden. Die Vorlage verwendet Zuordnungen zur Auswahl des richtigen Amazon Machine Image (AMI) für die Region und des Architekturtyps für den Instance-Typ. Ausgaben definieren benutzerdefinierte Werte, die vom aws cloudformation describe-stacks Befehl und in der Registerkarte Outputs der CloudFormation Konsole nach der Stack-Erstellung zurückgegeben werden. Sie können Ausgabewerte verwenden, um Informationen über die Ressourcen im Stack zurückzugeben, wie z. B. die URL für eine Website, die in der Vorlage erstellt wurde. Zuordnungen, Ausgaben und andere vorlagenbezogene Themen werden in Lernen der Grundlagen von Vorlagen ausführlicher erläutert.

Das ist vorerst genug zum Thema Vorlagen. Beginnen wir mit der Erstellung eines Stacks.

Schritt 2: Stellen Sie sicher, dass Sie alle erforderlichen Elemente für den Stack vorbereitet haben

Bevor Sie einen Stack aus einer Vorlage erstellen, müssen Sie sicherstellen, dass alle abhängigen Ressourcen, welche die Vorlage benötigt, verfügbar sind. Eine Vorlage kann sowohl vorhandene AWS Ressourcen als auch in der Vorlage selbst deklarierte Ressourcen verwenden oder darauf verweisen. CloudFormation kümmert sich um die Überprüfung von Verweisen auf Ressourcen in der Vorlage und überprüft auch Verweise auf vorhandene Ressourcen, um sicherzustellen, dass sie in der Region vorhanden sind, in der Sie den Stack erstellen. Wenn sich Ihre Vorlage auf eine abhängige Ressource bezieht, die nicht vorhanden ist, schlägt die Stack-Erstellung fehl.

Die WordPress Beispielvorlage enthält einen Eingabeparameter, KeyName, der das Schlüsselpaar angibt, das für die Amazon EC2-Instance verwendet wird, die in der Vorlage deklariert ist. Der Benutzer, der einen Stack aus der Vorlage erstellt, muss der Vorlage ein gültiges Amazon EC2-Schlüsselpaar für den KeyName-Parameter bereitstellen. Wenn Sie einen gültigen Schlüsselpaarnamen angeben, wird der Stack erfolgreich erstellt. Wenn Sie keinen gültigen Schlüsselpaarnamen angeben, wird der Stack zurückgesetzt.

Stellen Sie sicher, dass Sie ein gültiges Amazon-EC2-Schlüsselpaar haben und notieren Sie den Namen des Schlüsselpaars, bevor Sie den Stack erstellen.

Um Ihre Schlüsselpaare anzuzeigen, öffnen Sie die Amazon EC2-Konsole und wählen Sie dann im Navigationsbereich Key Pairs aus.

Anmerkung

Wenn Sie kein Amazon EC2-Schlüsselpaar besitzen, müssen Sie das Schlüsselpaar in der gleichen Region erstellen, in der Sie den Stack erstellen. Informationen zum Erstellen eines Schlüsselpaars finden Sie unter Getting an SSH Key Pair im Amazon EC2-Benutzerhandbuch für Linux-Instances.

Nachdem Sie nun ein gültiges Schlüsselpaar haben, verwenden wir die WordPress Vorlage, um einen Stack zu erstellen.

Schritt 3: Erstellen Sie den Stack

Sie erstellen Ihren Stack basierend auf der zuvor beschriebenen WordPress-1.0.0-Datei. Die Vorlage enthält mehrere AWS Ressourcen, z. B. eine EC2-Instance.

So erstellen Sie den WordPress Stack
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die - AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation.

  2. Wählen Sie Stapel erstellen aus.

  3. Wählen Sie im Abschnitt Vorlage angeben die URL der Amazon S3-Vorlage aus, um die URL für die WordPress Beispielvorlage einzugeben oder einzufügen, und wählen Sie dann Weiter aus:

    https://s3.us-west-2.amazonaws.com/cloudformation-templates-us-west-2/WordPress_Single_Instance.template

    Anmerkung

    AWS CloudFormation -Vorlagen, die in einem S3-Bucket gespeichert sind, müssen für den Benutzer zugänglich sein, der den Stack erstellt, und müssen sich in derselben -Region befinden wie der Stack, der erstellt wird. Wenn sich der S3-Bucket in der Region us-east-2 befindet, muss der Stack daher auch in us-east-2 erstellt werden.

  4. Geben Sie im Abschnitt Stack-Details eingeben einen Stack-Namen in das Feld Stack-Name ein. Wählen Sie für dieses Beispiel MyWPTestStack. Der Stack-Name darf keine Leerzeichen enthalten.

  5. Im Abschnitt Parameter müssen Sie Werte für alle Parameter angeben, die keine Standardwerte haben, einschließlich DBUser ,DBPassword ,DBRootPassword und KeyName. Geben Sie im KeyName Feld den Namen eines gültigen Amazon EC2-Paares in derselben Region ein, in der Sie den Stack erstellen.

  6. Wählen Sie Weiter aus.

  7. In diesem Szenario fügen wir keine Tags hinzu. Wählen Sie Weiter aus. Tags, die Schlüssel-Wert-Paare sind, können Ihnen helfen, Ihre Stacks zu identifizieren. Weitere Informationen finden Sie unter Hinzufügen von Tags zu Ihrem CloudFormation -Stack.

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

Es kann einige Minuten dauern, bis Ihr Stack erstellt wird – aber Sie möchten wahrscheinlich nicht einfach herumsitzen und warten. Wenn es Ihnen genauso geht wie uns, dann möchten Sie wissen, wie die Stack-Erstellung läuft.

Schritt 4: Überwachen Sie den Fortschritt der Stack-Erstellung

Nachdem Sie den Create Stack-Assistenten abgeschlossen haben, erstellt CloudFormation zunächst die Ressourcen, die in der Vorlage angegeben sind. Ihr neuer Stack, MyWPTestStack, wird in der Liste oben in der CloudFormationKonsole angezeigt. Der Status sollte CREATE_IN_PROGRESS (Erstellung in Bearbeitung) lauten. 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 MyWPTestStack in der Liste aus.

  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:

2013-04-24 18:54 UTC-7 CREATE_IN_PROGRESS AWS::CloudFormation::Stack MyWPTestStack 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:

2013-04-24 18:59 UTC-7 CREATE_COMPLETE AWS::EC2::Instance...

2013-04-24 18:54 UTC-7 CREATE_IN_PROGRESS AWS::EC2::Instance...

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

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

2013-04-24 19:17 UTC-7 CREATE_COMPLETE AWS::CloudFormation::Stack MyWPTestStack

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

Schritt 5: Verwenden Sie Ihre Stack-Ressourcen

Wenn der Stack MyWPTestStack den Status CREATE_COMPLETE aufweist, hat CloudFormation die Stack-Erstellung abgeschlossen, und Sie können mit der Nutzung der Ressourcen beginnen.

Der Beispiel- WordPress Stack erstellt eine WordPress Website. Sie können mit der WordPress Einrichtung fortfahren, indem Sie das WordPress Installationsskript ausführen.

So schließen Sie die WordPress Installation ab
  1. Wählen Sie auf der Registerkarte Outputs in der Zeile WebsiteURL den Link in der Spalte Value aus.

    Der WebsiteURL Ausgabewert ist die URL des Installationsskripts für die WordPress Website, die Sie mit dem Stack erstellt haben.

  2. Folgen Sie auf der Webseite für die WordPress Installation den Anweisungen auf dem Bildschirm, um die WordPress Installation abzuschließen. Weitere Informationen zur Installation von finden Sie WordPressunter https://wordpress.org/support/article/how-to-install-wordpress/.

    Nachdem Sie die Installation abgeschlossen und sich angemeldet haben, werden Sie zum Dashboard weitergeleitet, in dem Sie zusätzliche Optionen für Ihren WordPress Blog festlegen können. Anschließend können Sie mit dem Verfassen von Beiträgen für Ihren Blog beginnen, den Sie mithilfe einer CloudFormation-Vorlage erfolgreich erstellt haben.

Schritt 6: Bereinigen

Sie haben die Aufgaben für die CloudFormation ersten Schritte abgeschlossen. 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.

Löschen des Stacks und der entsprechenden Ressourcen
  1. Wählen Sie in der CloudFormation -Konsole den MyWPTestStackStack aus.

  2. Wählen Sie Delete Stack.

  3. Wählen Sie in der angezeigten Bestätigungsmeldung Close (Schließen) aus.

Der Status für MyWPTestStack wechselt zu DELETE_IN_PROGRESS. Auf die gleiche Weise, wie Sie das Erstellen des Stacks überwacht haben, können Sie über die Registerkarte Event dessen Löschung überwachen. Wenn das Löschen des Stacks CloudFormation abgeschlossen hat, wird der Stack aus der Liste entfernt.

Herzlichen Glückwunsch! Sie haben erfolgreich eine Vorlage ausgewählt, einen Stack erstellt, die Ressourcen angezeigt und verwendet und den Stack und die entsprechenden Ressourcen gelöscht. Außerdem konnten Sie mithilfe einer CloudFormation Vorlage einen WordPress Blog einrichten. Sie finden weitere Vorlagen in der AWS CloudFormation -Beispielvorlagen-Bibliothek.

Jetzt ist es an der Zeit, mehr über Vorlagen zu erfahren, damit Sie vorhandene Vorlagen ändern oder Ihre eigenen erstellen können: Lernen der Grundlagen von Vorlagen.