Allgemeine Vorlagenausschnitte - AWS CloudFormation

Allgemeine Vorlagenausschnitte

Die folgenden Beispiele zeigen verschiedene AWS CloudFormation-Vorlagenfunktionen, die nicht auf einen AWS-Service beschränkt sind.

Base64 Encoded UserData Property

Das folgende Beispiel zeigt den Aufbau einer UserData-Eigenschaft mithilfe 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-codierte UserData-Eigenschaft mit AccessKey und SecretKey

Das folgende Beispiel zeigt den Aufbau einer UserData-Eigenschaft mithilfe 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}

Abschnitt „Parameters“ mit einem Literalzeichenfolgenparameter

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

Abschnitt „Parameters“ mit Zeichenfolgenparameter mit regulärer Ausdruckseinschränkung

Das folgende Beispiel beschreibt eine gültige Deklaration für den Abschnitt „Parameters“, in welcher ein einzelner Parameter vom Typ String deklariert wird. Der AdminUserAccount-Parameter besitzt 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]*'

Abschnitt „Parameters“ mit Zahlenparameter mit MinValue- und MaxValue-Einschrä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 WebServerPort-Parameter besitzt standardmäßig den Wert 80 und weist den Mindestwert 1 und den Höchstwert 65535 auf.

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

Abschnitt „Parameters“ mit Zahlenparameter mit AllowedValues-Einschrä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 WebServerPort-Parameter besitzt standardmäßig den Wert 80 und lässt nur die Werte 80 und 8888 zu.

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

Abschnitt „Parameters“ mit einem CommaDelimitedList-Literalparameter

Das folgende Beispiel beschreibt eine gültige Deklaration für den Abschnitt „Parameters“, in welcher ein einzelner Parameter vom Typ CommaDelimitedList deklariert wird. Die NoEcho-Eigenschaft ist auf TRUE festgelegt, wodurch der Wert in der aws cloudformation describe-stacks-Ausgabe mit Sternchen (*****) maskiert wird, mit Ausnahme von Informationen, die an den folgenden Speicherorten 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 im Metadata-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 unter Metadaten-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

Abschnitt „Parameters“ mit auf Pseudoparameter basierendem Parameterwert

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 Pseudoparameter-Referenz.

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}

Zuweisungsabschnitt mit drei Zuweisungen

Das folgende Beispiel zeigt eine gültige Deklaration des Zuweisungsabschnitts mit drei Zuweisungen. 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"

Beschreibung auf Basis einer Literalzeichenfolge

Das folgende Beispiel zeigt eine gültige Deklaration des Beschreibungsabschnitts, in welcher der Wert auf einer Literalzeichenfolge basiert. Dieses Codefragment kann für Vorlagen, Parameter, Ressourcen, Eigenschaften oder Ausgaben verwendet werden.

JSON

"Description" : "Replace this value"

YAML

Description: "Replace this value"

Abschnitt „Outputs“ mit einer Literalzeichenfolgenausgabe

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

Abschnitt „Outputs“ mit einer Ressourcenreferenz und einer Pseudoreferenzausgabe

Dieses Beispiel zeigt einen Outputs-Abschnitt mit zwei Ausgabenzuweisungen. 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

Abschnitt „Outputs“ mit einer auf einer Funktion, einer Literalzeichenfolge, einer Referenz und einem Pseudoparameter basierenden Ausgabe

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 Codeausschnitt zeigt ein gültiges Beispiel für eine gültige Deklaration der Vorlagenformatversion.

JSON

"AWSTemplateFormatVersion" : "2010-09-09"

YAML

AWSTemplateFormatVersion: '2010-09-09'

AWS-Tag-Eigenschaft

Dieses Beispiel zeigt eine AWS-Tag-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"