Verwenden Sie AWS CloudFormation Designer zum Erstellen eines einfachen Webservers - 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.

Verwenden Sie AWS CloudFormation Designer zum Erstellen eines einfachen Webservers

Anmerkung

Application Composer im CloudFormation Konsolenmodus ist eine Verbesserung von AWS CloudFormation Designer. Wir empfehlen, wann immer möglich Application Composer anstelle von Designer zu verwenden. Weitere Informationen finden Sie unter Visuelles Erstellen von Vorlagen mit Application Composer.

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 YAML Hand-Editor macht es einfach, Vorlagen direkt in der AWS CloudFormation console. Um zu demonstrieren, wie man diese beiden Komponenten verwendet, verwenden wir AWS CloudFormation Designer zum Erstellen eines einfachen Webservers in einemVPC. Dann speichern wir die Vorlage und verwenden sie, um einen CloudFormation Stapel zu erstellen.

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

  1. Ressourcen hinzufügen und verbinden.

    Wenn du das erste Mal öffnest AWS CloudFormation Designer, Sie beginnen mit einer leeren Vorlage. Wir werden verwenden AWS CloudFormation Designer, um mit dem Auffüllen der Vorlage zu beginnen, indem Sie Ressourcen, wie z. B. eine VPC und eine EC2 Instanz, in Ihre Vorlage ziehen. Wir werden auch Links zwischen ihnen erstellen. Wir verwenden zum Beispiel AWS CloudFormation Designer zum Herstellen einer Verbindung zwischen dem Internet-Gateway und demVPC.

  2. Vorlagenparameter, Zuordnungen und Outputs hinzufügen.

    Wir verwenden die AWS CloudFormation Der Designer hat einen integrierten Editor zum Hinzufügen weiterer Vorlagenkomponenten integriert, 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 in Ihrer Vorlage definierten Ressourcen bereitstellt.

    Anmerkung

    CloudFormation ist ein kostenloser Service. Es fallen jedoch Gebühren für AWS Ressourcen, die Sie in Ihre Stacks aufnehmen, jeweils zum aktuellen Tarif. Weitere Informationen zur 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 (AmazonVPC), Amazon Elastic Compute Cloud (AmazonEC2) und CloudFormation verfügen. Zur Information gibt jedes Verfahren einige grundlegende Informationen zu jeder Ressource.

Bevor Sie beginnen, stellen Sie außerdem sicher, dass Sie über ein EC2 Amazon-Schlüsselpaar in der Region verfügen, in der Sie Ihren Stack erstellen. Weitere Informationen finden Sie unter EC2Amazon-Schlüsselpaare im EC2Amazon-Benutzerhandbuch.

Schritt 1: Ressourcen hinzufügen und verbinden

Wir verwenden die AWS CloudFormation drag-and-drop Designer-Schnittstelle zum Hinzufügen einer EC2 Amazon-Instance und Netzwerkressourcen wie SubnetzVPC, Routing-Tabelle und Internet-Gateway. Nach Hinzufügen aller Ressourcen erstellen wir Verbindungen zwischen ihnen. Zum Beispiel verknüpfen wir das Internet-Gateway mit einemVPC.

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

  2. Wählen Sie im integrierten Editor in der unteren Hälfte der Seite Bearbeiten (Stiftsymbol).

  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 EC2Kategorie einen VPCRessourcentyp in den Canvas-Bereich.

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

    AWS CloudFormation Designer ändert Ihre Vorlage sofort so, dass sie eine VPC Ressource enthält. Die Ergebnisse sehen dann ähnlich aus wie im folgenden JSON Codeausschnitt.

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

    Das YAML Snippet sieht dem Folgenden ähnlich.

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

    Beachten Sie, dass wir immer noch die VPC Eigenschaften angeben müssen, z. B. den VPC CIDR 's-Block. Dies machen wir später. Dies gilt für alle Ressourcen, die wir hinzufügen.

  5. Benennen Sie das umVPC.

    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 CloudFormation der Ressource zugewiesen wurde). Weitere Informationen finden Sie unter Resources.

    1. Wählen Sie die Ressource VPC.

    2. Wählen Sie im integrierten Editor das Bearbeiten-Symbol (Stiftsymbol).

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

    Als Nächstes fügen wir Ressourcen zum hinzuVPC.

  6. Ziehen Sie eine Ecke der VPC Ressource, um sie so zu erweitern, dass sie groß genug ist, um mehrere weitere Ressourcen aufzunehmen.

    Wir müssen ein Subnetz hinzufügen, da Sie eine EC2 Instanz, die die Website hostet, nicht direkt zum Subnetz hinzufügen können. Instanzen müssen sich in einem Subnetz befinden. VPC

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

    Wir werden das Subnetz verwenden, um einen Bereich von IP-Adressen zuzuweisenVPC, den Sie anderen zuordnen können AWS Ressourcen, z. B. eine EC2 Amazon-Instance.

    Wenn Sie das Subnetz innerhalb des VPC hinzufügen, AWS CloudFormation Der Designer ordnet das Subnetz automatisch dem zu. VPC 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 dies mit dem Subnetz funktioniert hat. Wenn Sie die Instanz im Subnetz hinzufügenVPC, wird die Instanz automatisch dem Subnetz zugeordnet.

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

    Die Sicherheitsgruppe ist eine virtuelle Firewall zur Steuerung von ein- und ausgehendem Datenverkehr der Web-Server-Instance. Es ist auch für Instanzen in a erforderlichVPC. 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 von hinzu VPC und benennen Sie ihn umInternetGateway.

    Das Internet-Gateway ermöglicht die Kommunikation zwischen der Instanz, die sich im Internet befindet, VPC und dem Internet. Ohne das Internet-Gateway kann niemand auf Ihre Website zugreifen.

    Sie können das Internet-Gateway zwar in den hineinziehenVPC, aber dadurch wird keine Verbindung mit dem hergestelltVPC. Das Internet-Gateway folgt nicht dem Container-Modell. Stattdessen müssen Sie eine Verbindung vom Internet-Gateway zum ziehenVPC, wie 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 auf denVPC.

      Der Rand gültiger Zielressourcen ändert die Farbe. In diesem Fall VPC ist das die einzig gültige Zielressource. Diese Verbindung erstellt eine Anhangsressource, die das Internet-Gateway dem zuordnetVPC.

  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 eine RouteTablein der hinzu VPC und benennen Sie sie umPublicRouteTable.

    Dadurch wird eine neue Routentabelle mit dem verknüpftVPC.

  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. Wird verwendetGatewayId, um eine Verbindung von der PublicRoute Ressource zum Internet-Gateway herzustellen, ähnlich wie Sie eine Verbindung zwischen dem Internet-Gateway und dem hergestellt habenVPC.

    CloudFormation Sie können einem Internet-Gateway erst eine Route zuordnen, wenn Sie das Internet-Gateway dem zuordnenVPC. Das bedeutet, dass wir eine explizite Abhängigkeit vom VPC Internet-Gateway-Anhang erstellen müssen, wie im nächsten Schritt beschrieben. Weitere Informationen finden Sie unter DependsOn Attribut.

  15. Erstellen Sie eine explizite Abhängigkeit zwischen der PublicRoute Ressource und dem VPC Internet-Gateway-Anhang.

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

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

      Mit DependsOn Verbindungen AWS CloudFormation Der Designer erstellt eine Abhängigkeit (ein DependsOn Attribut), bei der die ursprüngliche Ressource von der Zielressource abhängt. In diesem Fall AWS CloudFormation Der Designer fügt der PublicRoute Ressource ein DependsOn Attribut hinzu und gibt den VPC Gateway-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. Aus dem AWS CloudFormation Speichern Sie die Vorlage lokal über das Menü Datei (das Dateisymbol) in der Designer-Werkzeugleiste.

    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 Ihrer Vorlage sieben Ressourcen hinzugefügt und ihre logischen Ressourcen IDs mit benutzerfreundlichen Namen 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 der AWS CloudFormation Integrierter Editor von Designer.

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 AWS CloudFormation In Designer integrierter Editor zum Hinzufügen von Parametern, Zuordnungen und Ausgaben. Anschließend können wir auf diese Parameter und Zuordnungen zurückgreifen, wenn wir Ressourcen-Eigenschaften festlegen. Die exemplarische Vorgehensweise enthält ein Beispiel JSONYAML, das Sie zum Kopieren und Einfügen in den integrierten Editor verwenden 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 Parameters.

  1. Klicken Sie auf einen offenen Bereich im AWS CloudFormation Designer-Leinwand.

    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 fügt Parameter zur Angabe des Instance-Typs Ihres Webservers, einen EC2 Amazon-Schlüsselpaarnamen für den SSH Zugriff auf den Webserver und den IP-Adressbereich hinzu, über den auf den Webserver zugegriffen werden kann. SSH

    { "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 ist das gleiche Snippet drin. 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. In dieser exemplarischen Vorgehensweise verwenden wir ein Mapping, um eine AMI ID für eine EC2 Instance anzugeben, die auf dem Instance-Typ und der Region basiert, in der Sie den Stack erstellen. Weitere Informationen finden Sie unter Mappings.

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

  2. Kopieren Sie die folgenden JSON Zuordnungen und fügen Sie sie in den integrierten 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 sind 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 für einen describe stacks API Aufruf oder über die Registerkarte „Ausgaben“ im CloudFormation Konsolenstapel verfügbar sein sollen. In dieser exemplarischen Vorgehensweise geben wir die Website URL so aus, dass Sie sie nach der Erstellung problemlos aufrufen können. Weitere Informationen finden Sie unter Outputs.

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

  2. Kopieren Sie die folgende JSON Ausgabe und fügen Sie sie in den integrierten 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 ist die gleiche Ausgabe inYAML.

    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 AWS CloudFormation Der Designer hat einen integrierten Editor zur Angabe von Ressourceneigenschaften integriert. Wir stellen Muster JSON zur VerfügungYAML, die Sie kopieren und in den integrierten Editor einfügen können.

Ressourceneigenschaften angeben
  1. Auf dem AWS CloudFormation Designer-Leinwand, wählen Sie 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 Ausschnitt und fügen Sie ihn in den integrierten Editor zwischen den geschweiften Eigenschaften-Klammern () ein. {}

    Dieses Snippet spezifiziert die DNS Einstellungen und den Block von. CIDR VPC

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

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

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

    Aus Gründen der Effizienz stellen wir JSON Textbausteine zur Verfügung, YAML 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 Integriert JSON und YAML editiert.

  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 den gezogen haben. VPC

    Anmerkung

    Sie werden einige andere Assoziationen sehen, die AWS CloudFormation Der Designer wurde automatisch für Sie erstellt. 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 CIDR Zielblockeigenschaft hinzu, die den gesamten Datenverkehr an das Internet-Gateway weiterleitet:

    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 Regeln lassen den gesamten HTTP und bestimmten SSH Datenverkehr zu, den Sie bei der Erstellung eines Stacks als Parameterwert angeben.

    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 hat die SubnetId Eigenschaft verwendet, um die Instanz dem Subnetz zuzuordnen. Wir müssen 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 wie folgt verfassen JSON: Fügen Sie innerhalb der Metadata geschweiften Klammern ({}) und nach der AWS::CloudFormation::Designer schließenden Klammer ein Komma () hinzu. ,

    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. Auf der AWS CloudFormation Wählen Sie in der Designer-Symbolleiste die Option Vorlage validieren (Häkchensymbol), 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 einem erstellen könnenVPC. Um die Vorlage zu erstellen, haben wir zunächst Vorlagenressourcen hinzugefügt und miteinander verbunden, indem wir AWS CloudFormation Designer-Leinwandfenster. 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 Stapel zu erstellen, können Sie den CloudFormation Create Stack Wizard von starten AWS CloudFormation Designer. Wir verwenden die Vorlage, die wir in den vorherigen Schritten erstellt haben, um einen CloudFormation Stapel 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. Auf der AWS CloudFormation Wählen Sie in der Designer-Symbolleiste „Stapel erstellen“ (das Cloud-Symbol).

    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 Vorlage automatisch ausURL. Wählen Sie Weiter.

  3. Geben Sie im Abschnitt Stackdetails angeben einen Stacknamen in das Feld Stackname ein. Wählen Sie BasicWebServerStack für dieses Beispiel.

  4. Geben Sie im Abschnitt Parameter für das KeyNameFeld den Namen eines gültigen EC2 Amazon-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 der Stack-Name und der EC2 Amazon-Schlüsselpaarname korrekt sind, und wählen Sie dann Create.

Es kann mehrere Minuten dauern AWS CloudFormation um deinen Stack zu erstellen. Betrachten Sie die Stack-Ereignisse, um den Fortschritt zu überwachen. Weitere Informationen zum Anzeigen von Stack-Ereignissen finden Sie unter Stack-Informationen von der CloudFormation Konsole aus anzeigen. Nachdem der Stack erstellt wurde, sehen Sie sich die Stack-Ausgaben an und gehen Sie zur Beispiel-Website, URL um zu überprüfen, ob die Website läuft. Weitere Informationen finden Sie unter Stack-Informationen von der CloudFormation Konsole aus anzeigen.

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