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, um einen einfachen Webserver zu erstellen
Anmerkung
Infrastructure Composer im CloudFormation Konsolenmodus ist eine Verbesserung gegenüber AWS CloudFormation Designer. Wir empfehlen, wann immer möglich Infrastructure Composer anstelle von Designer zu verwenden. Weitere Informationen finden Sie unter Visuelles Erstellen von Vorlagen mit Infrastructure 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 Konsole zu ändern. Um zu demonstrieren, wie diese beiden Komponenten verwendet werden können, verwenden wir AWS CloudFormation Designer, um einen einfachen Webserver in einem zu erstellenVPC. 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:
-
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 z. B. eine VPC und eine EC2 Instanz, 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 dem herzustellen. VPC
-
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.
-
Ressourceneigenschaften angeben.
Wir verwenden wiederum den Integrierter Editor, um Konfigurationseinstellungen für unsere Ressourcen anzugeben.
-
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 (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-Oberfläche, um eine EC2 Amazon-Instance und Netzwerkressourcen wie ein SubnetzVPC, eine Routing-Tabelle und ein Internet-Gateway hinzuzufügen. 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
-
Öffnen Sie AWS CloudFormation Designer unter https://console.aws.amazon.com/cloudformation/Designer
. -
Wählen Sie im integrierten Editor in der unteren Hälfte der Seite Bearbeiten (Stiftsymbol).
-
Ä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.
-
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.
-
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 Abschnittssyntaxreferenz für CloudFormation Vorlagen.
-
Wählen Sie die Ressource VPC.
-
Wählen Sie im integrierten Editor das Bearbeiten-Symbol (Stiftsymbol).
-
Ändern Sie den Namen in
VPC
und drücken Sie dann die Eingabetaste.
Als Nächstes fügen wir Ressourcen zum hinzuVPC.
-
-
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
-
Fügen Sie innerhalb von einen Subnetz-Ressourcentyp hinzu VPC und benennen Sie ihn um.
PublicSubnet
Wir verwenden das Subnetz, um einen Bereich von IP-Adressen zuzuweisenVPC, den Sie mit anderen AWS Ressourcen verknüpfen können, z. B. einer EC2 Amazon-Instance.
Wenn Sie das Subnetz innerhalb von hinzufügenVPC, ordnet AWS CloudFormation Designer 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.
-
Fügen Sie einen Instance-Ressourcentyp in der
PublicSubnet
-Ressource hinzu und benennen Sie ihn inWebServerInstance
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.
-
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.
-
Fügen Sie einen InternetGatewayRessourcentyp an einer beliebigen Stelle außerhalb von hinzu VPC und benennen Sie ihn um
InternetGateway
.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.
-
Eine Verbindung zwischen Ressource
InternetGateway
und RessourceVPC
erstellen.-
Bewegen Sie die Maus bei der Ressource
InternetGateway
über die Internet-Gateway-Verbindung (AWS::EC2::VPCGatewayAttachment
). -
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.
-
-
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 um
PublicRouteTable
.Dadurch wird eine neue Routentabelle mit dem verknüpftVPC.
-
Um eine Routingregel der Routing-Tabelle hinzuzufügen, fügen Sie einen Route-Ressourcentyp in die
PublicRouteTable
-Ressource ein und benennen ihn inPublicRoute
um.Wir verwenden die Route, um festzulegen, wohin Traffic geleitet wird.
-
Bei der öffentlichen Route muss das Internet-Gateway das Ziel sein. Wird verwendet
GatewayId
, um eine Verbindung von derPublicRoute
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.
-
Erstellen Sie eine explizite Abhängigkeit zwischen der
PublicRoute
Ressource und dem VPC Internet-Gateway-Anhang.-
Zeigen Sie auf der
PublicRoute
Ressource mit der Maus auf den DependsOnPunkt. -
Ziehen Sie eine Verbindung zum VPC Internet-Gateway-Anhang (
AWS::EC2::VPCGatewayAttachment
).Bei
DependsOn
Verbindungen erstellt AWS CloudFormation Designer eine Abhängigkeit (einDependsOn
Attribut), bei der die ursprüngliche Ressource von der Zielressource abhängt. In diesem Fall fügt AWS CloudFormation Designer derPublicRoute
Ressource einDependsOn
Attribut hinzu und gibt den VPC Gateway-Anhang als Abhängigkeit an.
-
-
Erstellen Sie eine weitere Abhängigkeit von der
WebServerInstance
Ressource auf diePublicRoute
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. -
Ziehen Sie eine Verbindung von der
PublicRouteTable
Ressource zurPublicSubnet
Ressource, um Routing-Tabelle und Subnetz zu verknüpfen.Nun verwendet das öffentliche Subnetz die öffentliche Routing-Tabelle zur Leitung von Traffic.
-
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 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 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 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 Abschnittssyntaxreferenz für CloudFormation Vorlagen.
-
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.
-
Wählen Sie im Fenster Integrierter Editor die Registerkarte Parameter in der Ansicht Komponenten aus.
-
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 Abschnittssyntaxreferenz für CloudFormation Vorlagen.
-
Wählen Sie im Integrierter Editor-Bereich die Registerkarte Mappings aus.
-
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
In Ausgaben werden Werte deklariert, 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 Abschnittssyntaxreferenz für CloudFormation Vorlagen.
-
Wählen Sie im Integrierter Editor-Bereich die Registerkarte Outputs aus.
-
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
-
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. Wir stellen Muster JSON zur VerfügungYAML, die Sie kopieren und in den integrierten Editor einfügen können.
Ressourceneigenschaften angeben
-
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.
-
Wählen Sie im Integrierter Editor-Bereich die Registerkarte Eigenschaften aus.
-
Kopieren Sie das folgende JSON Snippet und fügen Sie es 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. YAMLEnableDnsSupport: '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.
-
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 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 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
undImageId
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. DerImageId
-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 dieSubnetId
Eigenschaft verwendet hat, um die Instanz dem Subnetz zuzuordnen, müssen wir dieNetworkInterfaces
Eigenschaft verwenden, da dies die einzige Möglichkeit ist, dem Webserver eine öffentliche IP zuzuweisen. Und wenn Sie die EigenschaftNetworkInterfaces
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' - |+
-
Fügen Sie die Webserver-Konfigurations-Metadaten der Ressource
WebServerInstance
hinzu.-
Wählen Sie die
WebServerInstance
-Ressource aus und wählen Sie dann die Metadaten-Registerkarte im Fenster Integrierter Editor aus. -
Wenn Sie Ihre Vorlage wie folgt verfassen JSON: Fügen Sie innerhalb der
Metadata
geschweiften Klammern ({}
) und nach derAWS::CloudFormation::Designer
schließenden Klammer ein Komma () hinzu.,
-
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'
-
-
Wählen Sie in der AWS CloudFormation Designer-Symbolleiste die Option Vorlage validieren (Häkchensymbol) 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.
-
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 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 alle Ihre Ressourcen bereitgestellt haben, haben Sie eine grundlegende Website eingerichtet und zum Laufen gebracht.
So erstellen Sie den Stack
-
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.
-
CloudFormation füllt die Vorlage automatisch ausURL. Wählen Sie Weiter.
-
Geben Sie im Abschnitt Stack-Details angeben einen Stack-Namen in das Feld Stack-Name ein. Wählen Sie
BasicWebServerStack
für dieses Beispiel. -
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.
-
Behalten Sie die weiteren Standardparameterwerte bei und wählen Sie Weiter aus.
-
Für diese Anleitung müssen Sie keine Tags hinzufügen oder erweiterte Einstellungen angeben, wählen Sie daher Weiter aus.
-
Stellen Sie sicher, dass der Stack-Name und der EC2 Amazon-Schlüsselpaarname korrekt sind, und wählen Sie dann Create.
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 Stack-Informationen von der CloudFormation Konsole aus anzeigen. Sehen Sie sich nach der Erstellung des Stacks die Stack-Ausgaben an und gehen Sie zur Beispiel-Website, URL um zu überprüfen, ob die Website ausgeführt wird. Weitere Informationen finden Sie unter Stack-Informationen von der CloudFormation Konsole aus anzeigen.
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:Verwenden Sie AWS CloudFormation Designer, um die Vorlage eines Stacks zu ändern, wodurch die Vorlage geändert wird, um einen skalierbaren Webserver zu erstellen.