AWS-Regelfunktionen - AWS CloudFormation

AWS-Regelfunktionen

In der Bedingung oder den Assertionen einer Regel können Sie intrinsische Funktionen wie Fn::Equals, Fn::Not und Fn::RefAll verwenden. Die Bedingungseigenschaft bestimmt, ob AWS CloudFormation die Assertionen anwendet. Wird die Bedingung mit true ausgewertet, evaluiert CloudFormation die Assertionen, um zu überprüfen, ob ein Parameterwert gültig ist, wenn ein bereitgestelltes Produkt erstellt oder aktualisiert wird. Wenn ein Parameterwert nicht gültig ist, wird CloudFormation den Stack nicht erstellen oder aktualisieren. Wenn die Bedingung mit false ausgewertet wird, überprüft CloudFormation den Parameterwert nicht und fährt mit der Stack-Operation fort.

Fn::And

Gibt true zurück, wenn alle angegebenen Bedingungen true ergeben, oder gibt false zurück, wenn eine der Bedingungen mit false ausgewertet wird. Fn::And dient als AND-Operator. Sie können mindestens 2 und höchstens 10 Bedingungen verwenden.

Deklaration

"Fn::And" : [{condition}, {...}]

Parameter

Bedingung

Eine regelspezifische intrinsische Funktion, die mit true oder false ausgewertet wird.

Beispiel

Das folgende Beispiel ergibt true, wenn der Name der referenzierten Sicherheitsgruppe sg-mysggroup entspricht und der Parameterwert InstanceType entweder m1.large oder m1.small ist:

"Fn::And" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["m1.large", "m1.small"], {"Ref" : "InstanceType"}]} ]

Fn::Contains

Gibt true zurück, wenn eine angegebene Zeichenfolge mindestens einem Wert in einer Liste von Zeichenfolgen entspricht.

Deklaration

"Fn::Contains" : [[list_of_strings], string]

Parameter

list_of_strings

Eine Liste mit Zeichenfolgen, z. B. "A", "B", "C"

string

Eine Zeichenfolge, z. B. "A", die Sie mit einer Liste von Zeichenfolgen vergleichen.

Beispiel

Die folgende Funktion ergibt true, wenn der Parameterwert InstanceType in der Liste (m1.large oder m1.small) enthalten ist:

"Fn::Contains" : [ ["m1.large", "m1.small"], {"Ref" : "InstanceType"} ]

Fn::EachMemberEquals

Gibt true zurück, wenn eine angegebene Zeichenfolge allen Werten in einer Liste entspricht.

Deklaration

"Fn::EachMemberEquals" : [[list_of_strings], string]

Parameter

list_of_strings

Eine Liste mit Zeichenfolgen, z. B. "A", "B", "C"

string

Eine Zeichenfolge, z. B. "A", die Sie mit einer Liste von Zeichenfolgen vergleichen.

Beispiel

Die folgende Funktion gibt true zurück, wenn das Tag Department für alle Parameter vom Typ AWS::EC2::VPC::Id einen Wert von IT hat:

"Fn::EachMemberEquals" : [ {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT" ]

Fn::EachMemberIn

Gibt true zurück, wenn jedes Element in einer Liste von Zeichenfolgen mindestens einem Wert in einer zweiten Zeichenfolgenliste entspricht.

Deklaration

"Fn::EachMemberIn" : [[strings_to_check], [strings_to_match]]

Parameter

strings_to_check

Eine Liste von Zeichenfolgen, wie z. B. "A", "B", "C". CloudFormation überprüft, ob jedes Mitglied im Parameter strings_to_check Teil des Parameters strings_to_match ist.

strings_to_match

Eine Liste mit Zeichenfolgen, z. B. "A", "B", "C". Jedes Element im Parameter strings_to_match wird mit den Elementen des Parameters strings_to_check verglichen.

Beispiel

Die folgende Funktion überprüft, ob die Benutzer ein Subnetz angeben, das sich in einer gültigen Virtual Private Cloud (VPC) befindet. Die VPC muss sich in dem Konto und in der Region befinden, in dem bzw. der die Benutzer mit dem Stack arbeiten. Die Funktion gilt für alle Parameter des Typs AWS::EC2::Subnet::Id.

"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]

Fn::Equals

Vergleicht zwei Werte, um festzustellen, ob sie gleich sind. Gibt true zurück, wenn die beiden Werte gleich sind, und false, wenn sie nicht gleich sind.

Deklaration

"Fn::Equals" : ["value_1", "value_2"]

Parameter

value

Ein Wert eines beliebigen Typs, den Sie mit einem anderen Wert vergleichen.

Beispiel

Das folgende Beispiel ergibt true, wenn der Wert für den Parameter EnvironmentType prod entspricht:

"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]

Fn::Not

Gibt true für eine Bedingung zurück, die false ergibt, oder gibt false für eine Bedingung zurück, die mit true ausgewertet wird. Fn::Not dient als NOT-Operator.

Deklaration

"Fn::Not" : [{condition}]

Parameter

condition

Eine regelspezifische intrinsische Funktion, die mit true oder false ausgewertet wird.

Beispiel

Das folgende Beispiel ergibt true, wenn der Wert für den Parameter EnvironmentType prod entspricht:

"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]

Fn::Or

Gibt true zurück, wenn alle angegebenen Bedingungen true ergeben, oder gibt false zurück, wenn eine der Bedingungen mit false ausgewertet wird. Fn::Or dient als OR-Operator. Sie können mindestens 2 und höchstens 10 Bedingungen verwenden.

Deklaration

"Fn::Or" : [{condition}, {...}]

Parameter

condition

Eine regelspezifische intrinsische Funktion, die mit true oder false ausgewertet wird.

Beispiel

Das folgende Beispiel ergibt true, wenn der Name der referenzierten Sicherheitsgruppe sg-mysggroup entspricht oder der Parameterwert InstanceType entweder m1.large oder m1.small ist:

"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["m1.large", "m1.small"], {"Ref" : "InstanceType"}]} ]

Fn::RefAll

Gibt alle Werte für einen bestimmten Parametertyp zurück.

Deklaration

"Fn::RefAll" : "parameter_type"

Parameter

parameter_type

Ein AWS-spezifischer Parametertyp, z. B. AWS::EC2::SecurityGroup::Id oder AWS::EC2::VPC::Id. Weitere Informationen finden Sie unter Parameter im AWS CloudFormation-Benutzerhandbuch.

Beispiel

Die folgende Funktion gibt eine Liste aller VPC-IDs für die Region und das AWS-Konto zurück, in der bzw. dem der Stack erstellt oder aktualisiert wird:

"Fn::RefAll" : "AWS::EC2::VPC::Id"

Fn::ValueOf

Gibt einen Attributwert oder eine Liste der Werte für einen bestimmten Parameter und ein Attribut zurück.

Deklaration

"Fn::ValueOf" : [ "parameter_logical_id", "attribute" ]

Parameter

Attribut

Der Name eines Attributs, von dem Sie einen Wert abrufen möchten. Weitere Informationen zu Attributen finden Sie unter Unterstützte Attribute.

parameter_logical_id

Der Name eines Parameters, für den Sie Attributwerte abrufen möchten. Der Parameter muss im Parameters-Abschnitt der Vorlage definiert sein.

Beispiele

Das folgende Beispiel gibt den Wert des Department-Tags für die VPC zurück, die vom Parameter ElbVpc angegeben wird:

"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]

Wenn Sie mehrere Werte für einen Parameter angeben, kann die Funktion Fn::ValueOf eine Liste zurückgeben. Beispielsweise können Sie mehrere Subnetze angeben und eine Liste mit Availability Zones erhalten, wobei jedes Element die Avalibility Zone eines bestimmten Subnetzes ist:

"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]

Fn::ValueOfAll

Gibt eine Liste mit allen Attributwerten für einen bestimmten Parametertyp und ein Attribut zurück.

Deklaration

"Fn::ValueOfAll" : ["parameter_type", "attribute"]

Parameter

Attribut

Der Name eines Attributs, von dem Sie einen Wert abrufen möchten. Weitere Informationen zu Attributen finden Sie unter Unterstützte Attribute.

parameter_type

Ein AWS-spezifischer Parametertyp, z. B. AWS::EC2::SecurityGroup::Id oder AWS::EC2::VPC::Id. Weitere Informationen finden Sie unter Parameter im AWS CloudFormation-Benutzerhandbuch.

Beispiel

Im folgenden Beispiel gibt die Funktion Fn::ValueOfAll eine Liste mit Werten zurück, wobei jedes Element der Department-Tag-Wert für VPCs mit diesem Tag ist:

"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]

Unterstützte Funktionen

Sie können innerhalb der Funktionen Fn::ValueOf und Fn::ValueOfAll keine andere Funktion verwenden. Allerdings können Sie die folgenden Funktionen in allen anderen regelspezifischen intrinsischen Funktionen verwenden:

  • Ref

  • Andere regelspezifische intrinsische Funktionen

Unterstützte Attribute

Die folgende Liste beschreibt die Attributwerte, die Sie für bestimmte Ressourcen und Parametertypen abrufen können:

Der Parametertyp AWS::EC2::VPC::Id oder VPC-IDs.
  • DefaultNetworkAcl

  • DefaultSecurityGroup

  • Tags.tag_key

Der Parametertyp AWS::EC2::Subnet::Id oder Subnetz-IDs,
  • AvailabilityZone

  • Tags.tag_key

  • VpcId

Der Parametertyp AWS::EC2::SecurityGroup::Id oder Sicherheitsgruppen-IDs.
  • Tags.tag_key