Exemplarische Vorgehensweise: Verwenden Sie AWS CloudFormation Designer, um einen einfachen Webserver zu erstellen - 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.

Exemplarische Vorgehensweise: Verwenden Sie AWS CloudFormation Designer, um einen einfachen Webserver zu erstellen

Application Composer im CloudFormation Konsolenmodus ist eine Verbesserung gegenüber AWS CloudFormation Designer. Wir empfehlen, wann immer möglich Application Composer anstelle von Designer zu verwenden. Weitere Informationen finden Sie unter Verwenden von Application Composer zum visuellen Erstellen von Vorlagen.

AWS CloudFormation Designer stellt Ihre Vorlagen grafisch dar, sodass Sie die Ressourcen in der Vorlage und deren Verknüpfung besser erkennen können. Der integrierte JSON- und YAML-Editor macht es einfach, Vorlagen direkt in der AWS CloudFormation Konsole zu ändern. Um zu demonstrieren, wie diese beiden Komponenten verwendet werden können, verwenden wir AWS CloudFormation Designer, um einen einfachen Webserver in einer VPC zu erstellen. Dann speichern wir die Vorlage und verwenden sie, um einen CloudFormation Stack zu erstellen.

In dieser schrittweisen Anleitung werden Sie die folgenden Schritte ausführen:

  1. Ressourcen hinzufügen und verbinden.

    Wenn Sie AWS CloudFormation Designer zum ersten Mal öffnen, beginnen Sie mit einer leeren Vorlage. Wir verwenden AWS CloudFormation Designer, um mit dem Auffüllen der Vorlage zu beginnen, indem wir Ressourcen wie eine VPC und eine EC2-Instance in Ihre Vorlage ziehen. Wir werden auch Links zwischen ihnen erstellen. Beispielsweise verwenden wir AWS CloudFormation Designer, um eine Verbindung zwischen dem Internet-Gateway und der VPC herzustellen.

  2. Vorlagenparameter, Zuordnungen und Outputs hinzufügen.

    Wir werden den integrierten AWS CloudFormation Designer-Editor verwenden, um weitere Vorlagenkomponenten hinzuzufügen, um die Vorlage nützlicher zu machen. Beispielsweise werden wir der Vorlage Parameter hinzufügen, sodass Sie beim Erstellen eines Stacks Eingabewerte angeben können. Auf diese Weise müssen Sie Eigenschaftswerte, die Sie öfters ändern, nicht ständig in der Vorlage bearbeiten.

  3. Ressourceneigenschaften angeben.

    Wir verwenden wiederum den Integrierter Editor, um Konfigurationseinstellungen für unsere Ressourcen anzugeben.

  4. Bereitstellen von Ressourcen

    Keine Ihrer Vorlagen-Ressourcen sind aktiv, bis Sie einen Stack erstellen. Wir verwenden die Vorlage, die Sie gerade erstellt haben, um einen CloudFormation Stack zu starten, der alle Ressourcen bereitstellt, die in Ihrer Vorlage definiert sind.

    Anmerkung

    CloudFormation ist ein kostenloser Service. Allerdings werden Ihnen die AWS Ressourcen, die Sie in Ihre Stacks aufnehmen, zum jeweils aktuellen Tarif in Rechnung gestellt. Weitere Informationen über AWS -Preise finden Sie auf der Detailseite für jedes Produkt unter http://aws.amazon.com.

Voraussetzungen

In dieser exemplarischen Vorgehensweise wird vorausgesetzt, dass Sie über Grundkenntnisse in Amazon Virtual Private Cloud (Amazon VPC), Amazon Elastic Compute Cloud (Amazon EC2) und verfügen. CloudFormation Zur Information gibt jedes Verfahren einige grundlegende Informationen zu jeder Ressource.

Bevor Sie beginnen, stellen Sie zudem sicher, dass Sie über ein Amazon EC2-Schlüsselpaar für die Region, in der Ihr Stack erstellt wird, verfügen. Weitere Informationen finden Sie unter Amazon-EC2-Schlüsselpaare im Amazon-EC2-Benutzerhandbuch.

Schritt 1: Ressourcen hinzufügen und verbinden

Wir verwenden die AWS CloudFormation drag-and-drop Designer-Oberfläche, um eine Amazon EC2 EC2-Instance und Netzwerkressourcen wie eine VPC, ein Subnetz, eine Routing-Tabelle und ein Internet-Gateway hinzuzufügen. Nach Hinzufügen aller Ressourcen erstellen wir Verbindungen zwischen ihnen. Beispielsweise verknüpfen wir das Internet-Gateway mit einer VPC.

Um Ressourcen einer Vorlage hinzuzufügen
  1. Öffnen Sie AWS CloudFormation Designer unter https://console.aws.amazon.com/cloudformation/designer.

  2. Klicken Sie im Integrierter Editor im unteren Bereich der Seite auf Bearbeiten ( ).

  3. Ändern Sie den Namen der Vorlage auf BasicWebServerInVPC und drücken Sie anschließend die Eingabetaste.

    Derzeit haben wir eine leere Vorlage, die nicht gültig ist. In den nächsten Schritten fügen wir Ressourcen hinzu, um sie gültig zu machen.

  4. Ziehen Sie im Bereich Ressourcentypen aus der Kategorie EC2 einen VPC-Ressourcentyp in den Bereich Zeichenbereich.

    Die Ressourcen sind nach Ressourcenkategorie geordnet. Alle Ressourcen, die wir hinzufügen, befinden sich in der Kategorie EC2.

    AWS CloudFormation Designer ändert Ihre Vorlage sofort so, dass sie eine VPC-Ressource enthält. Die Ergebnisse sehen dem folgenden JSON-Snippet ähnlich.

    "Resources": { "VPC431KO": { "Type": "AWS::EC2::VPC", "Properties": {}, "Metadata": { "AWS::CloudFormation::Designer": { "id": "445730ea-0d11-45ba-b6ac-12345EXAMPLE" } } } }

    Das YAML-Snippet sollte ungefähr folgendermaßen aussehen.

    Resources: VPC431KO: Type: 'AWS::EC2::VPC' Properties: {} Metadata: 'AWS::CloudFormation::Designer': id: 9430b008-7a03-41ed-b63e-12345EXAMPLE

    Beachten Sie, dass wir weiterhin die VPC-Eigenschaften angeben müssen, wie den CIDR-Block der VPC. Dies machen wir später. Dies gilt für alle Ressourcen, die wir hinzufügen.

  5. VPC umbenennen.

    Anmerkung

    Wenn Sie eine Ressource umbenennen, benennen Sie ihre logische ID um. Dabei handelt es sich um den Namen, auf den in der Vorlage verwiesen wird (nicht der Name, der beim Erstellen der Ressource zugewiesen wurde) CloudFormation . Weitere Informationen finden Sie unter Ressourcen.

    1. Wählen Sie die VPC-Ressource aus.

    2. Wählen Sie im Integrierter Editor das Symbol Bearbeiten ( ).

    3. Ändern Sie den Namen in VPC und drücken Sie dann die Eingabetaste.

    Als nächstes fügen wir der VPC Ressourcen zu.

  6. Ziehen Sie eine Ecke der VPC-Ressource, um Sie zu erweitern, bis weitere Ressourcen hineinpassen.

    Wir müssen ein Subnetz hinzufügen, da Sie keine EC2-Instance, die die Webseite hostet, direkt in die VPC hinzufügen können; Instanzen müssen sich in einem Subnetz befinden.

  7. Fügen Sie einen Subnetz-Ressourcentyp in der VPC hinzu und benennen Sie ihn in PublicSubnet um.

    Wir verwenden das Subnetz, um einen Bereich von IP-Adressen in der VPC zuzuweisen, den Sie mit anderen AWS Ressourcen verknüpfen können, z. B. einer Amazon EC2 EC2-Instance.

    Wenn Sie das Subnetz innerhalb der VPC hinzufügen, ordnet AWS CloudFormation Designer das Subnetz automatisch der VPC zu. Diese Zuordnung ist ein Container-Modell, in dem Ressourcen innerhalb des Container automatisch mit der Container-Ressource verknüpft werden.

  8. Fügen Sie einen Instance-Ressourcentyp in der PublicSubnet-Ressource hinzu und benennen Sie ihn in WebServerInstance um.

    Die Instance ist eine virtuelle Rechenumgebung, in der Sie eine Basic-Website hosten. Ähnlich wie bei Subnetz und VPC wird die Instance automatisch mit dem Subnetz verknüpft, wenn sie im Subnetz hinzugefügt wird.

  9. Fügen Sie der VPC einen SecurityGroupRessourcentyp hinzu und benennen Sie ihn WebServerSecurityGroup um.

    Die Sicherheitsgruppe ist eine virtuelle Firewall zur Steuerung von ein- und ausgehendem Datenverkehr der Web-Server-Instance. Sie ist auch für Instanzen in einer VPC erforderlich. Wir müssen die Web-Server-Instance mit dieser Sicherheitsgruppe verknüpfen; dies findet später statt, wenn wir die Eigenschaften der Instance festlegen.

  10. Fügen Sie einen InternetGatewayRessourcentyp an einer beliebigen Stelle außerhalb der VPC hinzu und benennen Sie ihn InternetGateway um.

    Das Internet-Gateway ermöglicht die Kommunikation zwischen der Instance in der VPC und dem Internet. Ohne das Internet-Gateway kann niemand auf Ihre Website zugreifen.

    Obwohl Sie das Internet-Gateway in die VPC ziehen können, wird hierdurch keine Verknüpfung mit der VPC erstellt. Das Internet-Gateway ist kein Container-Modell. Stattdessen müssen Sie eine Verbindung vom Internet-Gateway zur VPC ziehen; dies wird im nächsten Schritt beschrieben.

  11. Eine Verbindung zwischen Ressource InternetGateway und Ressource VPC erstellen.

    1. Bewegen Sie die Maus bei der Ressource InternetGateway über die Internet-Gateway-Verbindung (AWS::EC2::VPCGatewayAttachment).

    2. Ziehen Sie eine Verbindung zur VPC.

      Der Rand gültiger Zielressourcen ändert die Farbe. In diesem Fall ist die VPC die einzige gültige Zielressource. Für diese Verbindung wird eine Verbindungs-Ressource erstellt, die das Internet-Gateway mit der VPC verbindet.

  12. Nun müssen Sie eine Routing-Tabelle und Route hinzufügen, um festzulegen, wie Netzwerk-Traffic aus einem Subnetz weitergeleitet wird. Fügen Sie RouteTableinnerhalb der VPC eine hinzu und benennen Sie sie PublicRouteTable um.

    Dies verknüpft eine neue Routingtabelle mit der VPC.

  13. Um eine Routingregel der Routing-Tabelle hinzuzufügen, fügen Sie einen Route-Ressourcentyp in die PublicRouteTable-Ressource ein und benennen ihn in PublicRoute um.

    Wir verwenden die Route, um festzulegen, wohin Traffic geleitet wird.

  14. Bei der öffentlichen Route muss das Internet-Gateway das Ziel sein. Verwenden Sie GatewayId zum Erstellen einer Verbindung von der Ressource PublicRoute zum Internet-Gateway, ähnlich dazu, wie Sie eine Verbindung zwischen Internet-Gateway und VPC angelegt haben.

    CloudFormation kann einem Internet-Gateway erst eine Route zuordnen, wenn Sie das Internet-Gateway der VPC zuordnen. Das bedeutet, dass wir eine explizite Abhängigkeit von der Internet-Gateway-VPC-Verbindung erstellen müssen; dies wird im nächsten Schritt beschrieben. Weitere Informationen finden Sie unter DependsOn Attribut.

  15. Erstellen einer expliziten Abhängigkeit zwischen Ressource PublicRoute und der Internet-Gateway-VPC-Verbindung.

    1. Zeigen Sie auf der PublicRoute Ressource mit der Maus auf den DependsOnPunkt.

    2. Ziehen Sie eine Verbindung zur Internet-Gateway-VPC-Verbindung (AWS::EC2::VPCGatewayAttachment).

      Bei DependsOn Verbindungen erstellt AWS CloudFormation Designer eine Abhängigkeit (ein DependsOn Attribut), bei der die ursprüngliche Ressource von der Zielressource abhängt. In diesem Fall fügt AWS CloudFormation Designer der PublicRoute Ressource ein DependsOn Attribut hinzu und gibt den Gateway-VPC-Anhang als Abhängigkeit an.

  16. Erstellen Sie eine weitere Abhängigkeit von der WebServerInstance Ressource auf die PublicRoute Ressource.

    Die WebServerInstance Ressource ist hinsichtlich der Weiterleitung von Traffic in das Internet von der öffentlichen Route abhängig. Ohne die öffentliche Route kann die Instanz kein Signal (mithilfe des cfn-signal-Hilfsskripts) senden, um zu benachrichtigen, CloudFormation wenn die Instanzkonfiguration und die Anwendungsbereitstellung abgeschlossen sind.

  17. Ziehen Sie eine Verbindung von der PublicRouteTable Ressource zur PublicSubnet Ressource, um Routing-Tabelle und Subnetz zu verknüpfen.

    Nun verwendet das öffentliche Subnetz die öffentliche Routing-Tabelle zur Leitung von Traffic.

  18. Speichern Sie die Vorlage in der AWS CloudFormation Designer-Symbolleiste lokal, indem Sie das Menü Datei (das Dateisymbol) verwenden.

    AWS CloudFormation Designer speichert Ihre Vorlage auf Ihrer Festplatte. Sie können die Vorlage zu einem späteren Zeitpunkt verwenden, um einen Stack zu erstellen. Wir empfehlen, dass Sie die Vorlage regelmäßig speichern, um zu verhindern, dass Änderungen verloren gehen.

In diesem Schritt haben wir sieben Ressourcen Ihrer Vorlage hinzugefügt und ihre logischen IDs in Anzeigenamen umbenannt. Wir haben außerdem visuelle Verbindungen mit den meisten Ressourcen eingerichtet, um Verknüpfungen und Abhängigkeiten zu erstellen. Bevor wir einen Stack mit dieser Vorlage erstellen können, müssen wir jedoch weitere Verbindungen erstellen (z.B. die Instance mit der Sicherheitsgruppe verknüpfen) und Eigenschaften für jede Ressource festlegen. Im nächsten Schritt gehen wir Schritt für Schritt durch, wie Sie andere Komponenten Ihrer Vorlage, wie z. B. Eingabeparameter, mithilfe des integrierten AWS CloudFormation Designer-Editors ändern.

Schritt 2: Parameter, Zuweisungen und Outputs hinzufügen

Bevor wir Ressourceneigenschaften festlegen, müssen wir weitere Vorlagenkomponenten hinzufügen, um eine Wiederverwendung der Vorlage in mehreren Umgebungen einfacher zu gestalten. In diesem Schritt verwenden wir den integrierten AWS CloudFormation Designer-Editor, um Parameter, Zuordnungen und Ausgaben hinzuzufügen. Anschließend können wir auf diese Parameter und Zuordnungen zurückgreifen, wenn wir Ressourcen-Eigenschaften festlegen. Die Anleitung umfasst JSON- und YAML-Beispielcode, den Sie in den Integrierter Editor einfügen können.

Parameter hinzufügen

Parameter sind Eingabewerte, die Sie bei Erstellung eines Stacks festlegen. Sie sind nützlich, um Werte zu übergeben, sodass keine hartcodierten Werte in Vorlagen erforderlich sind. Beispielsweise müssen Sie den Instanztyp Ihres Webservers in der Vorlage nicht hart codieren; Sie können stattdessen einen Parameter verwenden, um den Instance-Typ festzulegen, wenn Sie einen Stack erstellen. Auf diese Weise können Sie mit derselben Vorlage mehrere Web-Server mit verschiedenen Instance-Typen erstellen. Weitere Informationen finden Sie unter Parameter.

  1. Klicken Sie auf einen offenen Bereich auf der AWS CloudFormation Designer-Arbeitsfläche.

    Je nachdem, was Sie ausgewählt haben, zeigt der Integrierter Editor Komponenten, die Sie bearbeiten können, entweder auf Vorlagenebene oder Ressourcenebene an. Auf Vorlagenebene können Sie alle anderen Abschnitte einer Vorlage bearbeiten, darunter Vorlagenparameter, Zuordnungen und Outputs, mit Ausnahme des Ressourcen-Abschnitts. Auf Ressourcenebene können Sie Ressourceneigenschaften und Attribute bearbeiten.

    Klicken Sie auf einen offenen Bereich auf der Leinwand, um Komponenten auf Vorlagenebene zu bearbeiten. Wählen Sie eine Ressource aus, um Komponenten auf Ressourcenebene zu bearbeiten.

  2. Wählen Sie im Fenster Integrierter Editor die Registerkarte Parameter in der Ansicht Komponenten aus.

  3. Kopieren Sie den Parameter im folgenden Snippet und fügen Sie sie in den Integrierter Editor ein.

    Das folgende JSON-Snippet umfasst Paramater zur Angabe des Webserver-Instance-Typs, einen Amazon-EC2-Schlüsselpaar-Name für SSH-Webserverzugang, und den IP-Adressbereich, mit dem sich über SSH auf den Webserver zugreifen lässt.

    { "Parameters": { "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." }, "KeyName": { "Description": "Name of an EC2 KeyPair to enable SSH access to the instance.", "Type": "AWS::EC2::KeyPair::KeyName", "ConstraintDescription": "must be the name of an existing EC2 KeyPair." }, "SSHLocation": { "Description": " The IP address range that can be used to access the web server using SSH.", "Type": "String", "MinLength": "9", "MaxLength": "18", "Default": "0.0.0.0/0", "AllowedPattern": "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})", "ConstraintDescription": "must be a valid IP CIDR range of the form x.x.x.x/x." } } }

    Hier finden Sie den gleichen Snippet in YAML.

    Parameters: 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. KeyName: Description: Name of an EC2 KeyPair to enable SSH access to the instance. Type: 'AWS::EC2::KeyPair::KeyName' ConstraintDescription: must be the name of an existing EC2 KeyPair. SSHLocation: Description: ' The IP address range that can be used to access the web server using SSH.' Type: String MinLength: '9' MaxLength: '18' Default: 0.0.0.0/0 AllowedPattern: '(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/(\d{1,2})' ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
Zuordnungen hinzufügen

Zuordnungen sind eine Reihe von Schlüsseln, die mit einem Satz von Namen-Wert-Paaren verknüpft sind. Sie eignen sich zur Angabe von Werten auf Grundlage eines Eingangs-Parameterwerts. Bei dieser schrittweisen Anleitung verwenden wir eine Zuordnung, um eine AMI ID für eine EC2-Instance festzulegen, basierend auf dem Instance-Typ und der Region, in der der Stack erstellt wird. Weitere Informationen finden Sie unter Mappings.

  1. Wählen Sie im Integrierter Editor-Bereich die Registerkarte Mappings aus.

  2. Kopieren Sie die JSON-Zuordnungen und fügen Sie sie in den Integrierter Editor ein.

    { "Mappings" : { "AWSInstanceType2Arch" : { "t1.micro" : { "Arch" : "HVM64" }, "t2.nano" : { "Arch" : "HVM64" }, "t2.micro" : { "Arch" : "HVM64" }, "t2.small" : { "Arch" : "HVM64" }, "t2.medium" : { "Arch" : "HVM64" }, "t2.large" : { "Arch" : "HVM64" }, "m1.small" : { "Arch" : "HVM64" }, "m1.medium" : { "Arch" : "HVM64" }, "m1.large" : { "Arch" : "HVM64" }, "m1.xlarge" : { "Arch" : "HVM64" }, "m2.xlarge" : { "Arch" : "HVM64" }, "m2.2xlarge" : { "Arch" : "HVM64" }, "m2.4xlarge" : { "Arch" : "HVM64" }, "m3.medium" : { "Arch" : "HVM64" }, "m3.large" : { "Arch" : "HVM64" }, "m3.xlarge" : { "Arch" : "HVM64" }, "m3.2xlarge" : { "Arch" : "HVM64" }, "m4.large" : { "Arch" : "HVM64" }, "m4.xlarge" : { "Arch" : "HVM64" }, "m4.2xlarge" : { "Arch" : "HVM64" }, "m4.4xlarge" : { "Arch" : "HVM64" }, "m4.10xlarge" : { "Arch" : "HVM64" }, "c1.medium" : { "Arch" : "HVM64" }, "c1.xlarge" : { "Arch" : "HVM64" }, "c3.large" : { "Arch" : "HVM64" }, "c3.xlarge" : { "Arch" : "HVM64" }, "c3.2xlarge" : { "Arch" : "HVM64" }, "c3.4xlarge" : { "Arch" : "HVM64" }, "c3.8xlarge" : { "Arch" : "HVM64" }, "c4.large" : { "Arch" : "HVM64" }, "c4.xlarge" : { "Arch" : "HVM64" }, "c4.2xlarge" : { "Arch" : "HVM64" }, "c4.4xlarge" : { "Arch" : "HVM64" }, "c4.8xlarge" : { "Arch" : "HVM64" }, "g2.2xlarge" : { "Arch" : "HVMG2" }, "g2.8xlarge" : { "Arch" : "HVMG2" }, "r3.large" : { "Arch" : "HVM64" }, "r3.xlarge" : { "Arch" : "HVM64" }, "r3.2xlarge" : { "Arch" : "HVM64" }, "r3.4xlarge" : { "Arch" : "HVM64" }, "r3.8xlarge" : { "Arch" : "HVM64" }, "i2.xlarge" : { "Arch" : "HVM64" }, "i2.2xlarge" : { "Arch" : "HVM64" }, "i2.4xlarge" : { "Arch" : "HVM64" }, "i2.8xlarge" : { "Arch" : "HVM64" }, "d2.xlarge" : { "Arch" : "HVM64" }, "d2.2xlarge" : { "Arch" : "HVM64" }, "d2.4xlarge" : { "Arch" : "HVM64" }, "d2.8xlarge" : { "Arch" : "HVM64" }, "hi1.4xlarge" : { "Arch" : "HVM64" }, "hs1.8xlarge" : { "Arch" : "HVM64" }, "cr1.8xlarge" : { "Arch" : "HVM64" }, "cc2.8xlarge" : { "Arch" : "HVM64" } }, "AWSRegionArch2AMI" : { "us-east-1" : {"HVM64" : "ami-0ff8a91507f77f867", "HVMG2" : "ami-0a584ac55a7631c0c"}, "us-west-2" : {"HVM64" : "ami-a0cfeed8", "HVMG2" : "ami-0e09505bc235aa82d"}, "us-west-1" : {"HVM64" : "ami-0bdb828fd58c52235", "HVMG2" : "ami-066ee5fd4a9ef77f1"}, "eu-west-1" : {"HVM64" : "ami-047bb4163c506cd98", "HVMG2" : "ami-0a7c483d527806435"}, "eu-west-2" : {"HVM64" : "ami-f976839e", "HVMG2" : "NOT_SUPPORTED"}, "eu-west-3" : {"HVM64" : "ami-0ebc281c20e89ba4b", "HVMG2" : "NOT_SUPPORTED"}, "eu-central-1" : {"HVM64" : "ami-0233214e13e500f77", "HVMG2" : "ami-06223d46a6d0661c7"}, "ap-northeast-1" : {"HVM64" : "ami-06cd52961ce9f0d85", "HVMG2" : "ami-053cdd503598e4a9d"}, "ap-northeast-2" : {"HVM64" : "ami-0a10b2721688ce9d2", "HVMG2" : "NOT_SUPPORTED"}, "ap-northeast-3" : {"HVM64" : "ami-0d98120a9fb693f07", "HVMG2" : "NOT_SUPPORTED"}, "ap-southeast-1" : {"HVM64" : "ami-08569b978cc4dfa10", "HVMG2" : "ami-0be9df32ae9f92309"}, "ap-southeast-2" : {"HVM64" : "ami-09b42976632b27e9b", "HVMG2" : "ami-0a9ce9fecc3d1daf8"}, "ap-south-1" : {"HVM64" : "ami-0912f71e06545ad88", "HVMG2" : "ami-097b15e89dbdcfcf4"}, "us-east-2" : {"HVM64" : "ami-0b59bfac6be064b78", "HVMG2" : "NOT_SUPPORTED"}, "ca-central-1" : {"HVM64" : "ami-0b18956f", "HVMG2" : "NOT_SUPPORTED"}, "sa-east-1" : {"HVM64" : "ami-07b14488da8ea02a0", "HVMG2" : "NOT_SUPPORTED"}, "cn-north-1" : {"HVM64" : "ami-0a4eaf6c4454eda75", "HVMG2" : "NOT_SUPPORTED"}, "cn-northwest-1" : {"HVM64" : "ami-6b6a7d09", "HVMG2" : "NOT_SUPPORTED"} } } }

    Hier finden Sie die gleichen Zuordnungen in YAML.

    Mappings: AWSInstanceType2Arch: t1.micro: Arch: HVM64 t2.nano: Arch: HVM64 t2.micro: Arch: HVM64 t2.small: Arch: HVM64 t2.medium: Arch: HVM64 t2.large: Arch: HVM64 m1.small: Arch: HVM64 m1.medium: Arch: HVM64 m1.large: Arch: HVM64 m1.xlarge: Arch: HVM64 m2.xlarge: Arch: HVM64 m2.2xlarge: Arch: HVM64 m2.4xlarge: Arch: HVM64 m3.medium: Arch: HVM64 m3.large: Arch: HVM64 m3.xlarge: Arch: HVM64 m3.2xlarge: Arch: HVM64 m4.large: Arch: HVM64 m4.xlarge: Arch: HVM64 m4.2xlarge: Arch: HVM64 m4.4xlarge: Arch: HVM64 m4.10xlarge: Arch: HVM64 c1.medium: Arch: HVM64 c1.xlarge: Arch: HVM64 c3.large: Arch: HVM64 c3.xlarge: Arch: HVM64 c3.2xlarge: Arch: HVM64 c3.4xlarge: Arch: HVM64 c3.8xlarge: Arch: HVM64 c4.large: Arch: HVM64 c4.xlarge: Arch: HVM64 c4.2xlarge: Arch: HVM64 c4.4xlarge: Arch: HVM64 c4.8xlarge: Arch: HVM64 g2.2xlarge: Arch: HVMG2 g2.8xlarge: Arch: HVMG2 r3.large: Arch: HVM64 r3.xlarge: Arch: HVM64 r3.2xlarge: Arch: HVM64 r3.4xlarge: Arch: HVM64 r3.8xlarge: Arch: HVM64 i2.xlarge: Arch: HVM64 i2.2xlarge: Arch: HVM64 i2.4xlarge: Arch: HVM64 i2.8xlarge: Arch: HVM64 d2.xlarge: Arch: HVM64 d2.2xlarge: Arch: HVM64 d2.4xlarge: Arch: HVM64 d2.8xlarge: Arch: HVM64 hi1.4xlarge: Arch: HVM64 hs1.8xlarge: Arch: HVM64 cr1.8xlarge: Arch: HVM64 cc2.8xlarge: Arch: HVM64 AWSRegionArch2AMI: us-east-1: HVM64: ami-0ff8a91507f77f867 HVMG2: ami-0a584ac55a7631c0c us-west-2: HVM64: ami-a0cfeed8 HVMG2: ami-0e09505bc235aa82d us-west-1: HVM64: ami-0bdb828fd58c52235 HVMG2: ami-066ee5fd4a9ef77f1 eu-west-1: HVM64: ami-047bb4163c506cd98 HVMG2: ami-0a7c483d527806435 eu-west-2: HVM64: ami-f976839e HVMG2: NOT_SUPPORTED eu-west-3: HVM64: ami-0ebc281c20e89ba4b HVMG2: NOT_SUPPORTED eu-central-1: HVM64: ami-0233214e13e500f77 HVMG2: ami-06223d46a6d0661c7 ap-northeast-1: HVM64: ami-06cd52961ce9f0d85 HVMG2: ami-053cdd503598e4a9d ap-northeast-2: HVM64: ami-0a10b2721688ce9d2 HVMG2: NOT_SUPPORTED ap-northeast-3: HVM64: ami-0d98120a9fb693f07 HVMG2: NOT_SUPPORTED ap-southeast-1: HVM64: ami-08569b978cc4dfa10 HVMG2: ami-0be9df32ae9f92309 ap-southeast-2: HVM64: ami-09b42976632b27e9b HVMG2: ami-0a9ce9fecc3d1daf8 ap-south-1: HVM64: ami-0912f71e06545ad88 HVMG2: ami-097b15e89dbdcfcf4 us-east-2: HVM64: ami-0b59bfac6be064b78 HVMG2: NOT_SUPPORTED ca-central-1: HVM64: ami-0b18956f HVMG2: NOT_SUPPORTED sa-east-1: HVM64: ami-07b14488da8ea02a0 HVMG2: NOT_SUPPORTED cn-north-1: HVM64: ami-0a4eaf6c4454eda75 HVMG2: NOT_SUPPORTED cn-northwest-1: HVM64: ami-6b6a7d09 HVMG2: NOT_SUPPORTED
Outputs hinzufügen

Ausgaben deklarieren Werte, die Sie für einen describe stacks API-Aufruf oder über die Registerkarte „Ausgaben“ im CloudFormation Konsolenstapel verfügbar machen möchten. Bei dieser schrittweisen Anleitung werden wir die Website-URL ausgeben, sodass Sie Webseite nach der Erstellung einfach betrachten können. Weitere Informationen finden Sie unter Outputs.

  1. Wählen Sie im Integrierter Editor-Bereich die Registerkarte Outputs aus.

  2. Kopieren Sie den folgenden JSON-Output und fügen Sie ihn in den Integrierter Editor ein.

    Die Ausgabe verwendet eine Fn::GetAtt intrinsische Funktion, um die öffentliche IP der Web-Server-Instance abzurufen.

    { "Outputs": { "URL": { "Value": { "Fn::Join": [ "", [ "http://", { "Fn::GetAtt": [ "WebServerInstance", "PublicIp" ] } ] ] }, "Description": "Newly created application URL" } } }

    Hier finden Sie den gleichen Output in YAML.

    Outputs: URL: Value: !Join - '' - - 'http://' - !GetAtt - WebServerInstance - PublicIp Description: Newly created application URL
  3. Speichern Sie Ihre Vorlage erneut, sodass die Änderungen nicht verloren gehen. Sie können Ihre Änderungen sicher in derselben Datei speichern, die Sie im vorhergehenden Abschnitt erstellt haben.

Jetzt, da Vorlagenparameter, Zuordnungen und Outputs vorhanden sind, können wir Ressourceneigenschaften festlegen.

Schritt 3: Ressourceneigenschaften festlegen

Viele Ressourcen haben erforderliche Eigenschaften, die ihre Konfigurationen oder Einstellungen festlegen, darunter, welcher Instance-Typ für den Webserver verwendet werden soll. Ähnlich wie im vorherigen Schritt verwenden wir den integrierten AWS CloudFormation Designer-Editor, um Ressourceneigenschaften anzugeben. Die Anleitung umfasst JSON- und YAML-Beispielcode, den Sie in den Integrierter Editor einfügen können.

Ressourceneigenschaften angeben
  1. Wählen Sie auf der AWS CloudFormation Designer-Arbeitsfläche die VPC Ressource aus.

    The Integrierter Editor zeigt die Komponenten auf Ressourcenebene an, die Sie bearbeiten können, wie die Ressourceneigenschaften und die Attribute.

  2. Wählen Sie im Integrierter Editor-Bereich die Registerkarte Eigenschaften aus.

  3. Kopieren Sie den folgenden JSON-Snippet und fügen Sie ihn in den Integrierter Editor zwischen den Eigenschaften-Klammern ({}) ein.

    Dieses Snippt legt die DNS-Einstellungen und den CIDR-Block der VPC fest.

    "EnableDnsSupport": "true", "EnableDnsHostnames": "true", "CidrBlock": "10.0.0.0/16"

    Geben Sie bei YAML eine neue Zeile nach Properties: ein und fügen Sie das folgende Snippet ein.

    EnableDnsSupport: 'true' EnableDnsHostnames: 'true' CidrBlock: 10.0.0.0/16
    Anmerkung

    Zum Komfort umfast die Anleitung JSON- und YAML-Snippets, die Sie kopieren und einfügen können. Beachten Sie jedoch, dass der Editor über eine automatische Vervollständigung verfügt, mit der Sie jede Eigenschaft manuell festlegen können. Weitere Informationen finden Sie unter Integrierter JSON- und YAML-Editor.

  4. Wiederholen Sie diesen Prozess mit den folgenden Ressourcen:

    PublicSubnet

    Fügen Sie nach der VPC-ID-Eigenschaft die folgende CIDR-Blockeigenschaft hinzu. AWS CloudFormation Designer hat die VPC-ID-Eigenschaft automatisch hinzugefügt, als Sie das Subnetz in die VPC gezogen haben.

    Anmerkung

    Sie werden einige andere Verknüpfungen sehen, die AWS CloudFormation Designer automatisch für Sie erstellt hat. Fügen Sie nur die neuen Eigenschaften, die fettgedruckt dargestellt sind, hinzu.

    JSON

    "VpcId": { "Ref": "VPC" }, "CidrBlock": "10.0.0.0/24"

    YAML

    VpcId: !Ref VPC CidrBlock: 10.0.0.0/24
    PublicRoute

    Fügen Sie die folgende Ziel-CIDR-Block-Eigenschaft hinzu, die den gesamten Datenverkehr zum Internet-Gateway leitet:

    JSON

    "DestinationCidrBlock": "0.0.0.0/0", "RouteTableId": { "Ref": "PublicRouteTable" }, "GatewayId": { "Ref": "InternetGateway" }

    YAML

    DestinationCidrBlock: 0.0.0.0/0 RouteTableId: !Ref PublicRouteTable GatewayId: !Ref InternetGateway
    WebServerSecurityGroup

    Fügen sie die folgenden Regeln für eingehenden Datenverkehr hinzu, die festlegen, welcher Traffic die Web-Server-Instance erreichen kann. Die Regel erlaubt allen HTTP-Traffic und bestimmten SSH-Traffic, den Sie beim Erstellen eines Stacks als Parameterwert angeben können.

    JSON

    "VpcId": { "Ref": "VPC" }, "GroupDescription" : "Allow access from HTTP and SSH traffic", "SecurityGroupIngress": [ { "IpProtocol": "tcp", "FromPort": 80, "ToPort": 80, "CidrIp": "0.0.0.0/0" }, { "IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "CidrIp": { "Ref": "SSHLocation" } } ]

    YAML

    VpcId: !Ref VPC GroupDescription: Allow access from HTTP and SSH traffic SecurityGroupIngress: - IpProtocol: tcp FromPort: 80 ToPort: 80 CidrIp: 0.0.0.0/0 - IpProtocol: tcp FromPort: 22 ToPort: 22 CidrIp: !Ref SSHLocation
    WebServerInstance

    Sie müssen eine Reihe von Eigenschaften für die Web-Server-Instance festlegen. Wir werden einige dieser Eigenschaften zu Demonstrationszwecken besprechen. Die Eigenschaften InstanceType und ImageId verwenden die Parameter- und Zuweisungswerte, die wir im letzten Abschnitt festgelegt haben. Bei der Erstellung eines Stack legen Sie den Instance-Typ als Parameterwert fest. Der ImageId-Wert ist eine Zuweisung, die auf der Region Ihres Stack und dem von Ihnen festgelegten Instance-Typ basiert.

    Die NetworkInterfaces Eigenschaft legt Netzwerkeinstellungen für die Web-Server-Instance fest. Diese Eigenschaft ermöglicht es uns, die Sicherheitsgruppe und das Subnetz mit der Instance zu verknüpfen. Obwohl AWS CloudFormation Designer die SubnetId Eigenschaft verwendet hat, um die Instanz dem Subnetz zuzuordnen, müssen wir die NetworkInterfaces Eigenschaft verwenden, da dies die einzige Möglichkeit ist, dem Webserver eine öffentliche IP zuzuweisen. Und wenn Sie die Eigenschaft NetworkInterfaces angegeben, müssen Sie das Subnetz und die Sicherheitsgruppe in der Eigenschaft angeben.

    In der UserData Eigenschaft legen wir Konfigurationsskripts fest, die ausgeführt werden, nachdem die Instance gestartet wurde. Alle Konfigurationsinformationen sind in den Metadaten der Instance definiert, die wir im nächsten Schritt hinzufügen.

    Ersetzen Sie alle Eigenschaften durch das folgende Snippet:

    Wichtig

    Hängen Sie dieses Snippet keinen bestehenden Eigenschaften an.

    JSON

    "InstanceType": { "Ref": "InstanceType" }, "ImageId": { "Fn::FindInMap": [ "AWSRegionArch2AMI", { "Ref": "AWS::Region" }, { "Fn::FindInMap": [ "AWSInstanceType2Arch", { "Ref": "InstanceType" }, "Arch" ] } ] }, "KeyName": { "Ref": "KeyName" }, "NetworkInterfaces": [ { "GroupSet": [ { "Ref": "WebServerSecurityGroup" } ], "AssociatePublicIpAddress": "true", "DeviceIndex": "0", "DeleteOnTermination": "true", "SubnetId": { "Ref": "PublicSubnet" } } ], "UserData": { "Fn::Base64": { "Fn::Join": [ "", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "# Install the files and packages from the metadata\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --configsets All ", " --region ", { "Ref": "AWS::Region" }, "\n", "# Signal the status from cfn-init\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref": "AWS::StackName" }, " --resource WebServerInstance ", " --region ", { "Ref": "AWS::Region" }, "\n" ] ] } }

    YAML

    InstanceType: !Ref InstanceType ImageId: !FindInMap - AWSRegionArch2AMI - !Ref 'AWS::Region' - !FindInMap - AWSInstanceType2Arch - !Ref InstanceType - Arch KeyName: !Ref KeyName NetworkInterfaces: - GroupSet: - !Ref WebServerSecurityGroup AssociatePublicIpAddress: 'true' DeviceIndex: '0' DeleteOnTermination: 'true' SubnetId: !Ref PublicSubnet UserData: !Base64 'Fn::Join': - '' - - | #!/bin/bash -xe - | yum install -y aws-cfn-bootstrap - | # Install the files and packages from the metadata - '/opt/aws/bin/cfn-init -v ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --configsets All ' - ' --region ' - !Ref 'AWS::Region' - |+ - | # Signal the status from cfn-init - '/opt/aws/bin/cfn-signal -e $? ' - ' --stack ' - !Ref 'AWS::StackName' - ' --resource WebServerInstance ' - ' --region ' - !Ref 'AWS::Region' - |+
  5. Fügen Sie die Webserver-Konfigurations-Metadaten der Ressource WebServerInstance hinzu.

    1. Wählen Sie die WebServerInstance-Ressource aus und wählen Sie dann die Metadaten-Registerkarte im Fenster Integrierter Editor aus.

    2. Wenn Sie Ihre Vorlage in JSON erstellen: Fügen Sie zwischen den Metadata-Klammern ({}) und hinter der schließenden AWS::CloudFormation::Designer Klammer ein Komma (,) ein.

    3. Fügen Sie nach der AWS::CloudFormation::Designer-Eigenschaft den folgenden Auszug hinzu, der das Hilfsskript „cfn-init” anweist, den Webserver zu starten und eine Basic Web Page zu erstellen.

      JSON

      "AWS::CloudFormation::Init" : { "configSets" : { "All" : [ "ConfigureSampleApp" ] }, "ConfigureSampleApp" : { "packages" : { "yum" : { "httpd" : [] } }, "files" : { "/var/www/html/index.html" : { "content" : { "Fn::Join" : ["\n", [ "<h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1>" ]]}, "mode" : "000644", "owner" : "root", "group" : "root" } }, "services" : { "sysvinit" : { "httpd" : { "enabled" : "true", "ensureRunning" : "true" } } } } }

      YAML

      'AWS::CloudFormation::Init': configSets: All: - ConfigureSampleApp ConfigureSampleApp: packages: yum: httpd: [] files: /var/www/html/index.html: content: !Join - |+ - - >- <h1>Congratulations, you have successfully launched the AWS CloudFormation sample.</h1> mode: '000644' owner: root group: root services: sysvinit: httpd: enabled: 'true' ensureRunning: 'true'
  6. Wählen Sie in der AWS CloudFormation Designer-Symbolleiste die Option Vorlage validieren ( ) aus, um Ihre Vorlage auf Syntaxfehler zu überprüfen.

    Sehen Sie sich die Fehler im Messages-Bereich an und beheben Sie diese. Validieren Sie die Vorlage anschließend erneut. Wenn Sie keine Fehler sehen, ist Ihre Vorlage syntaktisch gültig.

  7. Speichern Sie Ihre abgeschlossene Vorlage, um alle Änderungen beizubehalten.

Sie haben jetzt eine vollständige CloudFormation Vorlage, mit der Sie einen einfachen Webserver in einer VPC erstellen können. Um die Vorlage zu erstellen, haben wir zuerst über den Zeichenbereich von AWS CloudFormation Designer Vorlagenressourcen hinzugefügt und verbunden. Daraufhin haben wir mit dem Integrierter Editor weitere Vorlagenkomponenten hinzugefügt und Ressourceneigenschaften festgelegt. Im nächsten Schritt verwenden wir diese Vorlage, um einen Stack zu erstellen.

Schritt 4: Bereitstellen von Ressourcen

Um einen Stack zu erstellen, können Sie den CloudFormation Create Stack Wizard von AWS CloudFormation Designer aus starten. Wir verwenden die Vorlage, die wir in den vorherigen Schritten erstellt haben, um einen CloudFormation Stack zu erstellen. Nachdem CloudFormation Sie all Ihre Ressourcen bereitgestellt haben, haben Sie eine grundlegende Website eingerichtet und zum Laufen gebracht.

So erstellen Sie den Stack
  1. Wählen Sie in der AWS CloudFormation Designer-Symbolleiste die Option Stapel erstellen (das Cloud-Symbol) aus.

    AWS CloudFormation Designer speichert die geöffnete Vorlage in einem S3-Bucket und startet dann den CloudFormation Create Stack Wizard. CloudFormation verwendet denselben S3-Bucket, den er erstellt, wenn Sie Vorlagen hochladen.

  2. CloudFormation füllt die Vorlagen-URL automatisch aus. Wählen Sie Weiter.

  3. Geben Sie im Abschnitt Details eingeben einen Stack-Namen in das Feld Stack-Name ein. Wählen Sie BasicWebServerStack für dieses Beispiel.

  4. Geben Sie im Abschnitt Parameter für das KeyNameFeld den Namen eines gültigen Amazon EC2 EC2-Schlüsselpaars in derselben Region ein, in der Sie den Stack erstellen.

  5. Behalten Sie die weiteren Standardparameterwerte bei und wählen Sie Weiter aus.

  6. Für diese Anleitung müssen Sie keine Tags hinzufügen oder erweiterte Einstellungen angeben, wählen Sie daher Weiter aus.

  7. Stellen Sie sicher, dass Stackname und Amazon EC2-Schlüsselpaar-Name korrekt sind und wählen Sie daraufhin Erstellen aus.

Die Erstellung Ihres Stacks kann mehrere Minuten AWS CloudFormation dauern. Betrachten Sie die Stack-Ereignisse, um den Fortschritt zu überwachen. Weitere Informationen zum Anzeigen von Stack-Ereignissen finden Sie unter AWS CloudFormation Stack-Daten und Ressourcen anzeigen auf dem AWS Management Console. Nachdem der Stack erstellt wurde, betrachten Sie den Stack-Output und rufen Sie die Sample-Webseiten-URL auf, um zu prüfen, dass die Webseite läuft. Weitere Informationen finden Sie unter AWS CloudFormation Stack-Daten und Ressourcen anzeigen auf dem AWS Management Console.

Nachdem Sie nun erfolgreich eine Vorlage erstellt und einen Stack mit AWS CloudFormation Designer gestartet haben, können Sie den Stack in der folgenden exemplarischen Vorgehensweise verwenden:Exemplarische Vorgehensweise: Verwenden Sie AWS CloudFormation Designer, um die Vorlage eines Stacks zu ändern, wodurch die Vorlage geändert wird, um einen skalierbaren Webserver zu erstellen.