Allgemeine Vorlagenausschnitte
Die folgenden Beispiele zeigen verschiedene Features der CloudFormation-Vorlage, die nicht spezifisch für einen AWS-Dienst sind.
Themen
Base64 encoded UserData property with AccessKey and SecretKey
Parameters-Abschnitt mit String-Parameter mit Beschränkung auf reguläre Ausdrücke
Parameters-Abschnitt mit Zahlenparameter mit MinValue und MaxValue-Beschränkungen
Parameters-Abschnitt mit Zahlenparameter mit AllowedValues-Beschränkung
Parameters-Abschnitt mit einem literalen CommaDelimitedList-Parameter
Parameters-Abschnitt mit Parameterwert basierend auf Pseudoparameter
Outputs-Abschnitt mit einer Ressourcenreferenz und einer Pseudoreferenzausgabe
Base64 encoded UserData property
Dieses Beispiel zeigt den Aufbau einer Eigenschaft UserData unter Verwendung der Funktionen Fn::Base64 und Fn::Join . Die Referenzen MyValue und MyName sind Parameter, die im Abschnitt Parameters der Vorlage definiert werden müssen. Die Literalzeichenfolge Hello World ist einfach ein weiterer Wert, der in diesem Beispiel als Teil der UserData-Eigenschaft übergeben wird.
JSON
"UserData" : { "Fn::Base64" : { "Fn::Join" : [ ",", [ { "Ref" : "MyValue" }, { "Ref" : "MyName" }, "Hello World" ] ] } }
YAML
UserData: Fn::Base64: !Sub | Ref: MyValue Ref: MyName Hello World
Base64 encoded UserData property with AccessKey and SecretKey
Dieses Beispiel zeigt den Aufbau einer Eigenschaft UserData unter Verwendung der Funktionen Fn::Base64 und Fn::Join . Sie enthält die AccessKey- und SecretKey-Informationen. Die Referenzen AccessKey und SecretKey sind Parameter, die im Abschnitt „Parameters“ der Vorlage definiert werden müssen.
JSON
"UserData" : { "Fn::Base64" : { "Fn::Join" : [ "", [ "ACCESS_KEY=", { "Ref" : "AccessKey" }, "SECRET_KEY=", { "Ref" : "SecretKey" } ] ] } }
YAML
UserData: Fn::Base64: !Sub | ACCESS_KEY=${AccessKey} SECRET_KEY=${SecretKey}
Parameters-Abschnitt mit einem literalen String-Parameter
Das folgende Beispiel beschreibt eine gültige Deklaration für den Abschnitt „Parameters“, in welcher ein einzelner Parameter vom Typ String deklariert wird.
JSON
"Parameters" : { "UserName" : { "Type" : "String", "Default" : "nonadmin", "Description" : "Assume a vanilla user if no command-line spec provided" } }
YAML
Parameters: UserName: Type: String Default: nonadmin Description: Assume a vanilla user if no command-line spec provided
Parameters-Abschnitt mit String-Parameter mit Beschränkung auf reguläre Ausdrücke
Das folgende Beispiel beschreibt eine gültige Deklaration für den Abschnitt „Parameters“, in welcher ein einzelner Parameter vom Typ String deklariert wird. Der Parameter AdminUserAccount hat den Standardwert admin. Der Parameterwert muss eine Mindestlänge von 1 und eine maximale Länge von 16 aufweisen und enthält alphabetische Zeichen und Zahlen, aber muss mit einem Buchstaben beginnen.
JSON
"Parameters" : { "AdminUserAccount": { "Default": "admin", "NoEcho": "true", "Description" : "The admin account user name", "Type": "String", "MinLength": "1", "MaxLength": "16", "AllowedPattern" : "[a-zA-Z][a-zA-Z0-9]*" } }
YAML
Parameters: AdminUserAccount: Default: admin NoEcho: true Description: The admin account user name Type: String MinLength: 1 MaxLength: 16 AllowedPattern: '[a-zA-Z][a-zA-Z0-9]*'
Parameters-Abschnitt mit Zahlenparameter mit MinValue und MaxValue-Beschränkungen
Das folgende Beispiel beschreibt eine gültige Deklaration für den Abschnitt „Parameters“, in welcher ein einzelner Parameter vom Typ Number deklariert wird. Der Parameter WebServerPort hat einen Standardwert von 80, einen Mindestwert von 1 und einen Höchstwert von 65535.
JSON
"Parameters" : { "WebServerPort": { "Default": "80", "Description" : "TCP/IP port for the web server", "Type": "Number", "MinValue": "1", "MaxValue": "65535" } }
YAML
Parameters: WebServerPort: Default: 80 Description: TCP/IP port for the web server Type: Number MinValue: 1 MaxValue: 65535
Parameters-Abschnitt mit Zahlenparameter mit AllowedValues-Beschränkung
Das folgende Beispiel beschreibt eine gültige Deklaration für den Abschnitt „Parameters“, in welcher ein einzelner Parameter vom Typ Number deklariert wird. Der Parameter WebServerPort hat den Standardwert 80 und erlaubt nur Werte zwischen 80 und 8888.
JSON
"Parameters" : { "WebServerPortLimited": { "Default": "80", "Description" : "TCP/IP port for the web server", "Type": "Number", "AllowedValues" : ["80", "8888"] } }
YAML
Parameters: WebServerPortLimited: Default: 80 Description: TCP/IP port for the web server Type: Number AllowedValues: - 80 - 8888
Parameters-Abschnitt mit einem literalen CommaDelimitedList-Parameter
Das folgende Beispiel zeigt eine gültige Parameters-Abschnittsdeklaration, in der ein einzelner CommaDelimitedList-Typ-Parameter deklariert ist. Die Eigenschaft NoEcho wird auf TRUEgesetzt, wodurch ihr Wert in der describe-stacks-Ausgabe mit Sternchen (*****) maskiert wird, mit Ausnahme der Informationen, die an den unten angegebenen Stellen gespeichert sind.
Wichtig
Durch die Verwendung des NoEcho-Attributs werden keine Informationen maskiert, die im Folgenden gespeichert sind:
-
Der
Metadata-Vorlagenabschnitt. CloudFormation transformiert, ändert oder überarbeitet keine Informationen, die Sie imMetadata-Abschnitt einfügen. Weitere Informationen finden Sie unter Metadaten. -
Der
Outputs-Vorlagenabschnitt. Weitere Informationen finden Sie unter Ausgaben: -
Das
Metadata-Attribut einer Ressourcendefinition. Weitere Informationen finden Sie unterMetadata-Attribut.
Es wird dringend empfohlen, diese Mechanismen nicht zu verwenden, um vertrauliche Informationen wie Passwörter oder Geheimnisse einzugeben.
Wichtig
Anstatt vertrauliche Informationen direkt in Ihre CloudFormation-Vorlagen einzubetten, sollten Sie dynamische Parameter in der Stack-Vorlage verwenden, um auf vertrauliche Informationen zu verweisen, die außerhalb von CloudFormation gespeichert und verwaltet werden, z. B. im AWS Systems Manager-Parameterspeicher oder AWS Secrets Manager.
Weitere Informationen finden Sie in den bewährten Methoden zu Keine Anmeldeinformationen in Ihre Vorlagen einbetten.
JSON
"Parameters" : { "UserRoles" : { "Type" : "CommaDelimitedList", "Default" : "guest,newhire", "NoEcho" : "TRUE" } }
YAML
Parameters: UserRoles: Type: CommaDelimitedList Default: "guest,newhire" NoEcho: true
Parameters-Abschnitt mit Parameterwert basierend auf Pseudoparameter
Das folgende Beispiel zeigt Befehle in den EC2-Benutzerdaten, welche die Pseudoparameter AWS::StackName und AWS::Region verwenden. Weitere Informationen zu Pseudoparametern finden Sie unter Erhalten Sie AWS-Werte mit Pseudo-Parametern.
JSON
"UserData" : { "Fn::Base64" : { "Fn::Join" : ["", [ "#!/bin/bash -xe\n", "yum install -y aws-cfn-bootstrap\n", "/opt/aws/bin/cfn-init -v ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource LaunchConfig ", " --region ", { "Ref" : "AWS::Region" }, "\n", "/opt/aws/bin/cfn-signal -e $? ", " --stack ", { "Ref" : "AWS::StackName" }, " --resource WebServerGroup ", " --region ", { "Ref" : "AWS::Region" }, "\n" ]]}} }
YAML
UserData: Fn::Base64: !Sub | #!/bin/bash -xe yum update -y aws-cfn-bootstrap /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --region ${AWS::Region} /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource WebServerGroup --region ${AWS::Region}
AbschnittMapping mit drei Zuordnungen
Das folgende Beispiel zeigt eine gültige Mapping-Abschnittserklärung, die drei Zuordnungen enthält. Die Zuweisung liefert bei Übereinstimmung mit dem Zuweisungsschlüssel Stop, SlowDown oder Go die RGB-Werte, die dem entsprechenden RGBColor-Attribut zugewiesen wurden.
JSON
"Mappings" : { "LightColor" : { "Stop" : { "Description" : "red", "RGBColor" : "RED 255 GREEN 0 BLUE 0" }, "SlowDown" : { "Description" : "yellow", "RGBColor" : "RED 255 GREEN 255 BLUE 0" }, "Go" : { "Description" : "green", "RGBColor" : "RED 0 GREEN 128 BLUE 0" } } }
YAML
Mappings: LightColor: Stop: Description: red RGBColor: "RED 255 GREEN 0 BLUE 0" SlowDown: Description: yellow RGBColor: "RED 255 GREEN 255 BLUE 0" Go: Description: green RGBColor: "RED 0 GREEN 128 BLUE 0"
Description basierend auf einer wörtlichen Zeichenkette
Das folgende Beispiel zeigt eine gültige Description-Abschnittsdeklaration, bei der der Wert auf einer literalen Zeichenkette basiert. Dieses Codefragment kann für Vorlagen, Parameter, Ressourcen, Eigenschaften oder Ausgaben verwendet werden.
JSON
"Description" : "Replace this value"
YAML
Description: "Replace this value"
Outputs-Abschnitt mit einer literalen Stringausgabe
Dieses Beispiel zeigt eine Ausgabenzuweisung basierend auf einer Literalzeichenfolge.
JSON
"Outputs" : { "MyPhone" : { "Value" : "Please call 555-5555", "Description" : "A random message for aws cloudformation describe-stacks" } }
YAML
Outputs: MyPhone: Value: Please call 555-5555 Description: A random message for aws cloudformation describe-stacks
Outputs-Abschnitt mit einer Ressourcenreferenz und einer Pseudoreferenzausgabe
Dieses Beispiel zeigt einen Outputs-Abschnitt mit zwei Ausgangszuweisungen. Eine basiert auf einer Ressource und die andere auf einer Pseudoreferenz.
JSON
"Outputs" : { "SNSTopic" : { "Value" : { "Ref" : "MyNotificationTopic" } }, "StackName" : { "Value" : { "Ref" : "AWS::StackName" } } }
YAML
Outputs: SNSTopic: Value: !Ref MyNotificationTopic StackName: Value: !Ref AWS::StackName
Outputs-Abschnitt mit einer Ausgabe, die auf einer Funktion, einem literalen String, einer Referenz und einem Pseudoparameter basiert
Dieses Beispiel zeigt einen Outputs-Abschnitt mit einer Ausgabenzuweisung. Die Join-Funktion wird verwendet, um den Wert zu verketten, wobei ein Prozentzeichen als Begrenzungszeichen verwendet wird.
JSON
"Outputs" : { "MyOutput" : { "Value" : { "Fn::Join" : [ "%", [ "A-string", {"Ref" : "AWS::StackName" } ] ] } } }
YAML
Outputs: MyOutput: Value: !Join [ %, [ 'A-string', !Ref 'AWS::StackName' ]]
Vorlagenformatversion
Der folgende Ausschnitt zeigt eine gültige AWSTemplateFormatVersion-Abschnittsdeklaration.
JSON
"AWSTemplateFormatVersion" : "2010-09-09"
YAML
AWSTemplateFormatVersion: '2010-09-09'
AWSTags Eigenschaft
Dieses Beispiel zeigt eine AWS Tags-Eigenschaft. Sie würden diese Eigenschaft im Abschnitt „Properties” einer Ressource angeben. Wenn die Ressource erstellt wird, wird sie mit den Tags markiert, die Sie deklarieren.
JSON
"Tags" : [ { "Key" : "keyname1", "Value" : "value1" }, { "Key" : "keyname2", "Value" : "value2" } ]
YAML
Tags: - Key: "keyname1" Value: "value1" - Key: "keyname2" Value: "value2"