Wie erstelle ich eine variable Anzahl von EC2-Instanzressourcen in der Cloudformationsvorlage?
Wie erstellen Sie eine variable Anzahl von EC2-instance-Ressourcen in Cloudformation-Vorlage, laut einer template-parameter?
Der EC2 API und management-tools ermöglichen es starten mehrere Instanzen des gleichen AMI, aber ich kann nicht herausfinden, wie dies zu tun mit Cloudformation.
InformationsquelleAutor der Frage nivertech | 2011-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
AWS::EC2::Instance
Ressource nicht unterstützenMinCount
/MaxCount
Parameter der zugrunde liegenden"RunInstances"
API, also ist es nicht möglich, erstellen Sie eine variable Anzahl von EC2-Instanzen, die durch die übergabe von Parametern an eine einzelne Kopie dieser Ressource.Erstellen Sie eine variable Anzahl von EC2-instance-Ressourcen in CloudFormation-Vorlage nach einem template-Parameter, und ohne die Bereitstellung von einer Auto Scaling-Gruppe statt, es gibt zwei Optionen:
1. Bedingungen
Können Sie
Bedingungen
zu erstellen, die eine variable Anzahl vonAWS::EC2::Instance
Ressourcen in Abhängigkeit der Parameter.Ist es ein wenig Ausführlicher (da man
Fn::Equals
), aber es funktioniert.Hier ist ein funktionierendes Beispiel, mit dem der Benutzer festlegen, bis zu einem maximum von 5 Instanzen:
1a. Template Präprozessor-Bedingungen
Als eine variation auf die oben genannten, können Sie eine Vorlage verwenden Präprozessor wie Ruby ' s Erb zu generieren, die die oben genannten Vorlage basierend auf einem bestimmten maximum, so dass Ihr source-code kompakter und Doppelarbeit:
Zur Verarbeitung der oben genannten Quelle in einer CloudFormation-Vorlage kompatibel, run:
Für die Bequemlichkeit, hier eine Zusammenfassung mit der generierten Ausgabe YAML für 10 variable EC2-instances.
2. Benutzerdefinierte Ressource
Ein alternativer Ansatz ist die Umsetzung eines Benutzerdefinierte Ressourceruft die
"RunInstances"
/TerminateInstances
APIs direkt:InformationsquelleAutor der Antwort wjordan
Ich denke, was das ursprüngliche Plakat war nach etwas wie:
...
...in anderen Worten, legen Sie die Anzahl der ersten Instanzen (die Kapazität) von einem parameter.
InformationsquelleAutor der Antwort Ben Last
Kurze Antwort ist : das können Sie nicht. Sie nicht bekommen kann genau das gleiche Ergebnis (N identisch EC2-Instanzen, die, nicht gebunden durch eine auto scaling-Gruppe).
Starten mehrere Instanzen gleichermaßen von der Konsole ist nicht, wie das erstellen einer auto scaling-Gruppe mit N Instanzen als gewünschte Kapazität. Es ist eine sinnvolle Verknüpfung, die Sie haben, anstatt zu gehen, N-mal durch die gleiche EC2-Erstellung. Es heißt "Reservierung" (kein Bezug auf die reserved instance).
Auto scaling-Gruppen sind ein anderes Tier (auch wenn Sie am Ende mit N identisch EC2-Instanzen).
Können Sie entweder:
Problem ist, dass die Anzahl der EC2-Instanzen werden nicht dynamisch sein, es darf keine parameter.
Es ist nicht eine real CloudFormation-parameter, aber am Ende des Tages bekommen Sie Ihre dynamische Anzahl von EC2.
InformationsquelleAutor der Antwort huelbois
Mittlerweile gibt es viele AWS CloudFormation-Beispielvorlagen zur Verfügung, und einige starten mehrere Instanzen, wenn auch in der Regel demonstrieren andere Funktionen parallel; zum Beispiel, die AutoScalingKeepAtNSample.Vorlage schafft eine Lastenausgleich, Auto-Skalierte Probe-website und ist konfiguriert, um zu starten 2 EC2-Instanzen für diesen Zweck, gemäß dieser Vorlage Auszug:
Gibt es mehr erweiterte/vollständige Proben zur Verfügung, wie z.B. das Drupal-template für einen Hochverfügbare Web-Server mit Multi-AZ-Amazon RDS-Datenbank-instance und mit S3 für die Speicherung von Datei-Inhaltendie derzeit konfiguriert ist, zu ermöglichen, 1-5 web-server-Instanzen im Gespräch mit einem Multi-AZ - MySQL Amazon RDS Datenbank-Instanz und läuft hinter einer Elastic Load Balancerdie orchestriert die web-server-Instanzen über Auto Scaling.
InformationsquelleAutor der Antwort Steffen Opel
Verwenden Sie die
Ref
Funktion.http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-ref.html
Benutzerdefinierten Variablen werden in der
"Parameters"
Abschnitt der config-Datei. In der"Resources"
Abschnitt der config-Datei, die Sie ausfüllen können Werte mit Referenzen zu diesen Parametern.Im obigen Beispiel
{ "Ref": ... }
wird verwendet, um füllen Sie die Werte in die Vorlage. In diesem Fall stellen wir ganze zahlen als Werte für"MinSize"
und"MaxSize"
.InformationsquelleAutor der Antwort ekillaby