

Questa è la nuova *Guida di riferimento ai modelli CloudFormation *. Aggiorna i segnalibri e i link. Per informazioni su come iniziare CloudFormation, consulta la [Guida AWS CloudFormation per l'utente](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Funzioni delle regole
<a name="intrinsic-function-reference-rules"></a>

Le funzioni delle regole sono funzioni speciali che funzionano solo nella `Rules` sezione di un CloudFormation modello. Queste funzioni ti consentono di convalidare i valori dei parametri utilizzando una logica personalizzata. Tutte le convalide vengono eseguite prima della CloudFormation creazione o dell'aggiornamento di qualsiasi risorsa.

Le regole sono utili quando i vincoli dei parametri standard sono insufficienti. Ad esempio, quando SSL è abilitato, devono essere forniti sia un certificato che un nome di dominio. Una regola può garantire il rispetto di queste dipendenze.

Nella condizione o nelle asserzioni di una regola, puoi utilizzare le funzioni intrinseche, ad esempio `Fn::Equals`, `Fn::Not` e `Fn::RefAll`. La proprietà condition determina se CloudFormation applica le asserzioni. Se la condizione restituisce a`true`, CloudFormation valuta le asserzioni per verificare se il valore di un parametro è valido quando uno stack viene creato o aggiornato. Se il valore di un parametro non è valido, CloudFormation non crea o aggiorna lo stack. Se la condizione restituisce un risultato positivo`false`, CloudFormation non verifica il valore del parametro e procede con l'operazione di stack.

*Se non conosci l'uso delle regole nei tuoi modelli, ti consigliamo di consultare prima l'argomento sulla [Rulessintassi dei CloudFormation modelli](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/rules-section-structure.html) nella Guida per l'utente.AWS CloudFormation *

**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)
+ [Funzioni supportate](#supported-rule-functions)
+ [Attributi supportati](#rules-parameter-attributes)

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

Restituisce `true` se tutte le condizioni specificate vengono valutate `true`; restituisce `false` se una qualsiasi delle condizioni corrisponde a `false`. `Fn::And` agisce come operatore AND. Il numero minimo di condizioni che puoi includere è due, il numero massimo è dieci.

### Dichiarazione
<a name="fn-and-declaration"></a>

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

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

*condition*  
Una funzione intrinseca specifica delle regole che restituisce `true` o `false`.

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

L’esempio seguente restituisce `true` se il nome del gruppo di sicurezza a cui si fa riferimento è uguale a `sg-mysggroup` e se il valore di parametro `InstanceType` è `t3.large` o `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>

Restituisce `true` se una stringa specificata corrisponde ad almeno un valore in un elenco di stringhe.

### Dichiarazione
<a name="fn-contains-declaration"></a>

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

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

*list\$1of\$1strings*  
Un elenco di stringhe, ad esempio `"A", "B", "C"`.

*stringa*  
Una stringa, ad esempio `"A"`, che intendi confrontare con un elenco di stringhe.

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

La funzione seguente restituisce `true` se il valore di parametro `InstanceType` è incluso nell’elenco (`t3.large` o `t3.small`):

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

## `Fn::EachMemberEquals`
<a name="fn-eachmemberequals"></a>

Restituisce `true` se una stringa specificata corrisponde a tutti i valori in un elenco.

### Dichiarazione
<a name="fn-eachmemberequals-declaration"></a>

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

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

*list\$1of\$1strings*  
Un elenco di stringhe, ad esempio `"A", "B", "C"`.

*stringa*  
Una stringa, ad esempio `"A"`, che intendi confrontare con un elenco di stringhe.

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

La funzione seguente restituisce `true` se il tag `Department` per tutti i parametri di tipo `AWS::EC2::VPC::Id` hanno valore `IT`:

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

## `Fn::EachMemberIn`
<a name="fn-eachmemberin"></a>

Restituisce `true` se ogni membro in un elenco di stringhe corrisponde ad almeno un valore in un secondo elenco di stringhe.

### Dichiarazione
<a name="fn-eachmemberin-declaration"></a>

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

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

*strings\$1to\$1check*  
Un elenco di stringhe, ad esempio. `"A", "B", "C"` CloudFormation verifica se ogni membro del `strings_to_check` parametro si trova nel `strings_to_match` parametro.

*strings\$1to\$1match*  
Un elenco di stringhe, ad esempio `"A", "B", "C"`. Ogni membro nel parametro `strings_to_match` viene confrontato con i membri del parametro `strings_to_check`.

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

La funzione seguente verifica se gli utenti specificano una sottorete in un Virtual Private Cloud (VPC) valido. Il VPC deve essere nell’account e nella Regione in cui gli utenti utilizzano lo stack. La funzione si applica a tutti i parametri di tipo `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>

Confronta due valori per determinare se sono uguali. Restituisce `true` se i due valori sono uguali e `false` se non lo sono.

### Dichiarazione
<a name="fn-equals-declaration"></a>

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

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

*`value`*  
Un valore di qualsiasi tipo che intendi confrontare con un altro valore.

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

L’esempio seguente restituisce `true` se il valore per il parametro `EnvironmentType` è uguale a `prod`:

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

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

Restituisce `true` per una condizione che viene valutata `false` e restituisce `false` per una condizione che viene valutata `true`. `Fn::Not` agisce come operatore NOT.

### Dichiarazione
<a name="fn-not-declaration"></a>

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

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

*`condition`*  
Una funzione intrinseca specifica delle regole che restituisce `true` o `false`.

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

L’esempio seguente restituisce `true` se il valore per il parametro `EnvironmentType` non è uguale a `prod`:

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

## `Fn::Or`
<a name="fn-or"></a>

Restituisce `true` se una delle condizioni specificate viene valutata `true`; restituisce `false` se tutte le condizioni corrispondono a `false`. `Fn::Or` agisce come operatore OR. Il numero minimo di condizioni che puoi includere è due, il numero massimo è dieci.

### Dichiarazione
<a name="fn-or-declaration"></a>

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

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

*`condition`*  
Una funzione intrinseca specifica delle regole che restituisce `true` o `false`.

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

L’esempio seguente restituisce `true` se il nome del gruppo di sicurezza a cui si fa riferimento è uguale a `sg-mysggroup` o se il valore di parametro `InstanceType` è `t3.large` o `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>

Restituisce tutti i valori per un tipo di parametro specificato.

### Dichiarazione
<a name="fn-refall-declaration"></a>

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

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

*parameter\$1type*  
Un tipo AWS di parametro specifico, ad esempio `AWS::EC2::SecurityGroup::Id` o`AWS::EC2::VPC::Id`. Per ulteriori informazioni, consulta [Tipi di parametri AWS specifici supportati nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-supplied-parameter-types.html#aws-specific-parameter-types-supported) per l'*AWS CloudFormation utente*.

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

La seguente funzione restituisce un elenco di tutti i VPC IDs per la regione e Account AWS in cui lo stack viene creato o aggiornato:

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

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

Restituisce un valore di attributo o un elenco di valori per un parametro e un attributo specifici.

### Dichiarazione
<a name="fn-valueof-declaration"></a>

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

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

*attributo*  
Il nome di un attributo da cui recuperare un valore. Per ulteriori informazioni sugli attributi, consulta [Attributi supportati](#rules-parameter-attributes).

*parameter\$1logical\$1id*  
Il nome di un parametro da cui recuperare un valore. Il parametro deve essere dichiarato nella sezione `Parameters` del modello.

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

L’esempio seguente restituisce il valore del tag `Department` per il VPC specificato dal parametro `ElbVpc`:

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

Se si specificano più valori per un parametro, la ValueOf funzione Fn:: può restituire un elenco. Ad esempio, se specifichi più sottoreti e ottieni un elenco di zone di disponibilità in cui ogni membro è la zona di disponibilità di una determinata sottorete:

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

## `Fn::ValueOfAll`
<a name="fn-valueofall"></a>

Restituisce un elenco di tutti i valori di attributo per un tipo di parametro e un attributo specifici.

### Dichiarazione
<a name="fn-valueofall-declaration"></a>

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

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

*attributo*  
Il nome di un attributo a partire dal quale intendi recuperare un valore. Per ulteriori informazioni sugli attributi, consulta [Attributi supportati](#rules-parameter-attributes).

*parameter\$1type*  
Un tipo AWS di parametro specifico, ad esempio o. `AWS::EC2::SecurityGroup::Id` `AWS::EC2::VPC::Id` Per ulteriori informazioni, consulta [Tipi di parametri AWS specifici supportati nella Guida](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cloudformation-supplied-parameter-types.html#aws-specific-parameter-types-supported) per l'*AWS CloudFormation utente*.

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

Nell'esempio seguente, la `Fn::ValueOfAll` funzione restituisce un elenco di valori, in cui ogni membro è il valore del `Department` tag VPCs associato a quel tag:

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

## Funzioni supportate
<a name="supported-rule-functions"></a>

Non puoi utilizzare un’altra funzione nelle funzioni `Fn::ValueOf` e `Fn::ValueOfAll`. Tuttavia, è consentito utilizzare le seguenti funzioni in tutte le altre funzioni intrinseche specifiche delle regole:
+ `Ref`
+ Altre funzioni intrinseche specifiche delle regole

## Attributi supportati
<a name="rules-parameter-attributes"></a>

Il seguente elenco descrive i valori di attributo che è possibile recuperare per determinati tipi di parametro e risorse:

Il tipo di `AWS::EC2::VPC::Id` parametro o VPC IDs.  
+ DefaultNetworkAcl
+ DefaultSecurityGroup
+ Tags.*tag\$1key*

Il tipo di `AWS::EC2::Subnet::Id` parametro o la IDs sottorete,  
+ AvailabilityZone
+ Tags.*tag\$1key*
+ VpcId

Il tipo di `AWS::EC2::SecurityGroup::Id` parametro o il gruppo IDs di sicurezza.  
+ Tags.*tag\$1key*