

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 CloudFormation, consultez le [guide de AWS CloudFormation l'utilisateur](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Fonctions de règle
<a name="intrinsic-function-reference-rules"></a>

Les fonctions de règle sont des fonctions spéciales qui ne fonctionnent que dans la `Rules` section d'un CloudFormation modèle. Ces fonctions permettent de valider les valeurs de paramètres avec une logique personnalisée. Toutes les validations ont lieu avant de CloudFormation créer ou de mettre à 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 les CloudFormation assertions sont appliquées. Si la condition est évaluée à`true`, CloudFormation évalue les assertions pour vérifier si une valeur de paramètre est valide lors de la création ou de la mise à jour d'une pile. Si la valeur d'un paramètre n'est pas valide, CloudFormation cela ne crée ni ne met à jour la pile. Si la condition est évaluée à`false`, CloudFormation elle ne vérifie pas la valeur du paramètre et poursuit l'opération de pile.

Si vous utilisez des règles pour la première fois dans vos modèles, nous vous recommandons de consulter d'abord la rubrique relative à la [Rulessyntaxe des CloudFormation modèles](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/rules-section-structure.html) dans le *Guide de AWS CloudFormation l'utilisateur*.

**Topics**
+ [`Fn::And`](#fn-and)
+ [`Fn::Contains`](#fn-contains)
+ [`Fn::EachMemberEquals`](#fn-eachmemberequals)
+ [`Fn::EachMemberIn`](#fn-eachmemberin)
+ [`Fn::Equals`](#fn-equals)
+ [`Fn::Not`](#fn-not)
+ [`Fn::Or`](#fn-or)
+ [`Fn::RefAll`](#fn-refall)
+ [`Fn::ValueOf`](#fn-valueof)
+ [`Fn::ValueOfAll`](#fn-valueofall)
+ [Fonctions prises en charge](#supported-rule-functions)
+ [Attributs pris en charge](#rules-parameter-attributes)

## `Fn::And`
<a name="fn-and"></a>

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
<a name="fn-and-declaration"></a>

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

### Parameters
<a name="fn-and-parameters"></a>

*condition*  
Fonction intrinsèque spécifique aux règles qui prend la valeur `true` ou `false`.

### Exemple
<a name="fn-and-example"></a>

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`
<a name="fn-contains"></a>

Renvoie `true` si une chaîne spécifiée correspond au moins à une valeur dans une liste de chaînes.

### Déclaration
<a name="fn-contains-declaration"></a>

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

### Parameters
<a name="fn-contains-parameters"></a>

*list\$1of\$1strings*  
Liste de chaînes comme `"A", "B", "C"`.

*chaîne*  
Chaîne, comme `"A"`, que vous souhaitez comparer à une liste de chaînes.

### Exemple
<a name="fn-contains-example"></a>

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`
<a name="fn-eachmemberequals"></a>

Renvoie `true` si une chaîne spécifiée correspond à toutes les valeurs d'une liste.

### Déclaration
<a name="fn-eachmemberequals-declaration"></a>

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

### Parameters
<a name="fn-eachmemberequals-parameters"></a>

*list\$1of\$1strings*  
Liste de chaînes comme `"A", "B", "C"`.

*chaîne*  
Chaîne, comme `"A"`, que vous souhaitez comparer à une liste de chaînes.

### Exemple
<a name="fn-eachmemberequals-example"></a>

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`
<a name="fn-eachmemberin"></a>

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
<a name="fn-eachmemberin-declaration"></a>

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

### Parameters
<a name="fn-eachmemberin-parameters"></a>

*strings\$1to\$1check*  
Une liste de chaînes, telles que`"A", "B", "C"`. CloudFormation vérifie si chaque membre du `strings_to_check` paramètre se trouve dans le `strings_to_match` paramètre.

*strings\$1to\$1match*  
Liste de chaînes comme `"A", "B", "C"`. Chaque membre du paramètre `strings_to_match` est comparé aux membres du paramètre `strings_to_check`.

### Exemple
<a name="fn-eachmemberin-example"></a>

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`
<a name="fn-equals"></a>

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
<a name="fn-equals-declaration"></a>

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

### Parameters
<a name="fn-equals-parameters"></a>

*`value`*  
Valeur de tout type que vous voulez comparer à une autre valeur.

### Exemple
<a name="fn-equals-example"></a>

L'exemple suivant prend la valeur `true` si la valeur du paramètre `EnvironmentType` est égale à `prod` :

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

## `Fn::Not`
<a name="fn-not"></a>

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
<a name="fn-not-declaration"></a>

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

### Parameters
<a name="fn-not-parameters"></a>

*`condition`*  
Fonction intrinsèque spécifique aux règles qui prend la valeur `true` ou `false`.

### Exemple
<a name="fn-not-example"></a>

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`
<a name="fn-or"></a>

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
<a name="fn-or-declaration"></a>

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

### Parameters
<a name="fn-or-parameters"></a>

*`condition`*  
Fonction intrinsèque spécifique aux règles qui prend la valeur `true` ou `false`.

### Exemple
<a name="fn-or-example"></a>

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`
<a name="fn-refall"></a>

Renvoie toutes les valeurs pour un type de paramètre spécifié.

### Déclaration
<a name="fn-refall-declaration"></a>

```
"Fn::RefAll" : "parameter_type"
```

### Parameters
<a name="fn-refall-parameters"></a>

*parameter\$1type*  
Un type de paramètre AWS spécifique, tel que `AWS::EC2::SecurityGroup::Id` ou`AWS::EC2::VPC::Id`. Pour plus d'informations, consultez la section [Types de paramètres AWS spécifiques pris en charge](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-supplied-parameter-types.html#aws-specific-parameter-types-supported) dans le *Guide de l'AWS CloudFormation utilisateur*.

### Exemple
<a name="fn-refall-example"></a>

La fonction suivante renvoie une liste de tous les VPC IDs de la région et Compte AWS dans lesquels la pile est créée ou mise à jour :

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

## `Fn::ValueOf`
<a name="fn-valueof"></a>

Renvoie une valeur d'attribut ou une liste des valeurs pour un paramètre et un attribut spécifiques.

### Déclaration
<a name="fn-valueof-declaration"></a>

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

### Parameters
<a name="fn-valueof-parameters"></a>

*attribute*  
Nom de l’attribut à partir duquel extraire une valeur. Pour plus d'informations sur les attributs, consultez [Attributs pris en charge](#rules-parameter-attributes).

*parameter\$1logical\$1id*  
Nom du paramètre à partir duquel extraire les valeurs d’attribut. Le paramètre doit être déclaré dans la section `Parameters` du modèle.

### Exemples
<a name="fn-valueof-examples"></a>

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 ValueOf fonction Fn : : 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`
<a name="fn-valueofall"></a>

Renvoie une liste de toutes les valeurs d'attribut pour un type de paramètre et d'attribut donné.

### Déclaration
<a name="fn-valueofall-declaration"></a>

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

### Parameters
<a name="fn-valueofall-parameters"></a>

*attribute*  
Nom d'un attribut à partir duquel vous souhaitez extraire une valeur. Pour plus d'informations sur les attributs, consultez [Attributs pris en charge](#rules-parameter-attributes).

*parameter\$1type*  
Un type de paramètre AWS spécifique, tel que `AWS::EC2::SecurityGroup::Id` ou`AWS::EC2::VPC::Id`. Pour plus d'informations, consultez la section [Types de paramètres AWS spécifiques pris en charge](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-supplied-parameter-types.html#aws-specific-parameter-types-supported) dans le *Guide de l'AWS CloudFormation utilisateur*.

### Exemple
<a name="fn-valueofall-example"></a>

Dans l'exemple suivant, la `Fn::ValueOfAll` fonction renvoie une liste de valeurs, où chaque membre est la valeur de `Department` balise associée VPCs à cette balise :

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

## Fonctions prises en charge
<a name="supported-rule-functions"></a>

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
<a name="rules-parameter-attributes"></a>

La liste suivante décrit les valeurs d'attribut que vous pouvez extraire pour des ressources et des types de paramètre spécifiques :

Type de `AWS::EC2::VPC::Id` paramètre ou VPC IDs.  
+ DefaultNetworkAcl
+ DefaultSecurityGroup
+ Balises.*tag\$1key*

Le type de `AWS::EC2::Subnet::Id` paramètre ou le sous-réseau IDs,  
+ AvailabilityZone
+ Balises.*tag\$1key*
+ VpcId

Type de `AWS::EC2::SecurityGroup::Id` paramètre ou groupe de sécurité IDs.  
+ Balises.*tag\$1key*