Il s’agit du nouveau Guide de référence des modèles CloudFormation. Veuillez mettre à jour vos favoris et vos liens. Pour obtenir de l’aide pour démarrer avec CloudFormation, consultez le Guide de l’utilisateur AWS CloudFormation.
Fonctions de règle
Les fonctions de règle sont des fonctions spéciales qui ne fonctionnent que dans la section Rules d’un modèle CloudFormation. Ces fonctions permettent de valider les valeurs de paramètres avec une logique personnalisée. Toutes les validations s’exécutent avant que CloudFormation ne crée ou ne mette à jour des ressources.
Les règles sont utiles lorsque les contraintes standard des paramètres ne suffisent pas. Par exemple, lorsque SSL est activé, un certificat et un nom de domaine doivent être fournis. Une règle peut garantir que ces dépendances sont respectées.
Dans la condition ou les assertions d'une règle, vous pouvez utiliser des fonctions intrinsèques, comme Fn::Equals, Fn::Not et Fn::RefAll. La propriété condition détermine si CloudFormation applique les assertions. Si la condition a la valeur true, CloudFormation évalue les assertions pour vérifier la validité des valeurs des paramètres lors de la création ou de la mise à jour de la pile. Si une valeur de paramètre n'est pas valide, CloudFormation ne crée pas ou ne met pas à jour la pile. Si la condition a la valeur false, CloudFormation ne vérifie pas la valeur du paramètre et poursuit l'opération de pile.
Si vous débutez avec les règles dans vos modèles, nous vous recommandons d’abord de consulter la rubrique Syntaxe Rules des modèles CloudFormation dans le Guide de l’utilisateur AWS CloudFormation.
Rubriques
Fn::And
Renvoie true si toutes les conditions spécifiées correspondent à true, ou false si l'une des conditions indique false. Fn::And agit en tant qu'opérateur AND. Le nombre minimum de conditions que vous pouvez inclure est deux, et le maximum est dix.
Déclaration
"Fn::And" : [{condition}, {...}]
Paramètres
- condition
-
Fonction intrinsèque spécifique aux règles qui prend la valeur
trueoufalse.
Exemple
L'exemple suivant a la valeur true si le nom du groupe de sécurité référencé est égal à sg-mysggroup et si la valeur du paramètre InstanceType est t3.large ou t3.small :
"Fn::And": [ { "Fn::Equals": [ "sg-mysggroup", {"Ref": "ASecurityGroup"} ] }, { "Fn::Contains": [ [ "t3.large", "t3.small" ], {"Ref": "InstanceType"} ] } ]
Fn::Contains
Renvoie true si une chaîne spécifiée correspond au moins à une valeur dans une liste de chaînes.
Déclaration
"Fn::Contains" : [[list_of_strings], string]
Paramètres
- list_of_strings
-
Liste de chaînes comme
"A", "B", "C". - chaîne
-
Chaîne, comme
"A", que vous souhaitez comparer à une liste de chaînes.
Exemple
La fonction suivante a la valeur true si la valeur du paramètre InstanceType est contenu dans la liste (t3.large ou t3.small) :
"Fn::Contains" : [ ["t3.large", "t3.small"], {"Ref" : "InstanceType"} ]
Fn::EachMemberEquals
Renvoie true si une chaîne spécifiée correspond à toutes les valeurs d'une liste.
Déclaration
"Fn::EachMemberEquals" : [[list_of_strings], string]
Paramètres
- list_of_strings
-
Liste de chaînes comme
"A", "B", "C". - chaîne
-
Chaîne, comme
"A", que vous souhaitez comparer à une liste de chaînes.
Exemple
La fonction suivante renvoie true si la balise Department pour l'ensemble des paramètres de type AWS::EC2::VPC::Id a la valeur IT :
"Fn::EachMemberEquals" : [ {"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]}, "IT" ]
Fn::EachMemberIn
Renvoie true si chaque membre d'une liste de chaînes correspond au moins à une valeur d'une deuxième liste de chaînes.
Déclaration
"Fn::EachMemberIn" : [[strings_to_check], [strings_to_match]]
Paramètres
- strings_to_check
-
Liste de chaînes comme
"A", "B", "C". CloudFormation vérifie si chaque membre du paramètrestrings_to_checkest dans le paramètrestrings_to_match. - strings_to_match
-
Liste de chaînes comme
"A", "B", "C". Chaque membre du paramètrestrings_to_matchest comparé aux membres du paramètrestrings_to_check.
Exemple
La fonction suivante vérifie si les utilisateurs spécifient un sous-réseau qui constitue un cloud privé virtuel (VPC) valide. Le VPC doit se trouver dans le compte et la région où les utilisateurs interagissent avec la pile. La fonction s'applique à tous les paramètres de type AWS::EC2::Subnet::Id.
"Fn::EachMemberIn" : [ {"Fn::ValueOfAll" : ["AWS::EC2::Subnet::Id", "VpcId"]}, {"Fn::RefAll" : "AWS::EC2::VPC::Id"} ]
Fn::Equals
Compare deux valeurs pour déterminer si elles sont égales. Renvoie true si les deux valeurs sont égales et false si elles ne le sont pas.
Déclaration
"Fn::Equals" : ["value_1", "value_2"]
Paramètres
value-
Valeur de tout type que vous voulez comparer à une autre valeur.
Exemple
L'exemple suivant prend la valeur true si la valeur du paramètre EnvironmentType est égale à prod :
"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]
Fn::Not
Renvoie true pour une condition qui prend la valeur false, et false pour une condition qui a la valeur true. Fn::Not agit en tant qu'opérateur NOT.
Déclaration
"Fn::Not" : [{condition}]
Paramètres
condition-
Fonction intrinsèque spécifique aux règles qui prend la valeur
trueoufalse.
Exemple
L'exemple suivant prend la valeur true si la valeur du paramètre EnvironmentType est égale à prod :
"Fn::Not" : [{"Fn::Equals" : [{"Ref" : "EnvironmentType"}, "prod"]}]
Fn::Or
Renvoie true si l'une des conditions spécifiées a la valeur true, ou false si toutes les conditions ont la valeur false. Fn::Or agit en tant qu'opérateur OR. Le nombre minimum de conditions que vous pouvez inclure est deux, et le maximum est dix.
Déclaration
"Fn::Or" : [{condition}, {...}]
Paramètres
condition-
Fonction intrinsèque spécifique aux règles qui prend la valeur
trueoufalse.
Exemple
L'exemple suivant a la valeur true si le nom du groupe de sécurité référencé est égal à sg-mysggroup, ou si la valeur du paramètre InstanceType est t3.large ou t3.small :
"Fn::Or" : [ {"Fn::Equals" : ["sg-mysggroup", {"Ref" : "ASecurityGroup"}]}, {"Fn::Contains" : [["t3.large", "t3.small"], {"Ref" : "InstanceType"}]} ]
Fn::RefAll
Renvoie toutes les valeurs pour un type de paramètre spécifié.
Déclaration
"Fn::RefAll" : "parameter_type"
Paramètres
- parameter_type
-
Type de paramètre spécifique à AWS, tel que
AWS::EC2::SecurityGroup::IdouAWS::EC2::VPC::Id. Pour plus d’informations, consultez Types de paramètres propres à AWS pris en charge dans le Guide de l’utilisateur AWS CloudFormation.
Exemple
La fonction suivante renvoie une liste de tous les ID de VPC pour la région et le Compte AWS dans lesquels la pile est créée ou mise à jour :
"Fn::RefAll" : "AWS::EC2::VPC::Id"
Fn::ValueOf
Renvoie une valeur d'attribut ou une liste des valeurs pour un paramètre et un attribut spécifiques.
Déclaration
"Fn::ValueOf" : [ "parameter_logical_id", "attribute" ]
Paramètres
- attribute
-
Nom de l’attribut à partir duquel extraire une valeur. Pour plus d'informations sur les attributs, consultez Attributs pris en charge.
- parameter_logical_id
-
Nom du paramètre à partir duquel extraire les valeurs d’attribut. Le paramètre doit être déclaré dans la section
Parametersdu modèle.
Exemples
L'exemple suivant renvoie la valeur de la balise Department pour le VPC spécifié par le paramètre ElbVpc :
"Fn::ValueOf" : ["ElbVpc", "Tags.Department"]
Si vous spécifiez plusieurs valeurs pour un paramètre, la fonction Fn::ValueOf peut renvoyer une liste. Par exemple, vous pouvez spécifier plusieurs sous-réseaux et obtenir une liste de zones de disponibilité où chaque membre est la zone de disponibilité d'un sous-réseau spécifique :
"Fn::ValueOf" : ["ListOfElbSubnets", "AvailabilityZone"]
Fn::ValueOfAll
Renvoie une liste de toutes les valeurs d'attribut pour un type de paramètre et d'attribut donné.
Déclaration
"Fn::ValueOfAll" : ["parameter_type", "attribute"]
Paramètres
- attribute
-
Nom d'un attribut à partir duquel vous souhaitez extraire une valeur. Pour plus d'informations sur les attributs, consultez Attributs pris en charge.
- parameter_type
-
Type de paramètre spécifique à AWS, tel que
AWS::EC2::SecurityGroup::IdouAWS::EC2::VPC::Id. Pour plus d’informations, consultez Types de paramètres propres à AWS pris en charge dans le Guide de l’utilisateur AWS CloudFormation.
Exemple
Dans l'exemple suivant, la fonction Fn::ValueOfAll renvoie une liste de valeurs, où chaque membre est la valeur de balise Department pour les VPC avec cette balise :
"Fn::ValueOfAll" : ["AWS::EC2::VPC::Id", "Tags.Department"]
Fonctions prises en charge
Vous ne pouvez pas utiliser une autre fonction au sein des fonctions Fn::ValueOf et Fn::ValueOfAll. Par contre, vous pouvez utiliser les fonctions suivantes dans toutes les autres fonctions intrinsèques spécifiques aux règles :
-
Ref -
Autres fonctions intrinsèques spécifiques aux règles
Attributs pris en charge
La liste suivante décrit les valeurs d'attribut que vous pouvez extraire pour des ressources et des types de paramètre spécifiques :
- Le type de paramètre
AWS::EC2::VPC::Idou ID de VPC. -
-
DefaultNetworkAcl
-
DefaultSecurityGroup
-
Balises.
tag_key
-
- Le type de paramètre
AWS::EC2::Subnet::Idou ID de sous-réseau, -
-
AvailabilityZone
-
Balises.
tag_key -
VpcId
-
- Le type de paramètre
AWS::EC2::SecurityGroup::Idou ID de groupe de sécurité. -
-
Balises.
tag_key
-