

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à.

# Utilizzo dei parametri di input con AWS CloudFormation Guard regole
<a name="using-input-parameters"></a>

AWS CloudFormation Guard consente di utilizzare i parametri di input per le ricerche dinamiche dei dati durante la convalida. Questa funzionalità è particolarmente utile quando è necessario fare riferimento a dati esterni nelle regole. Tuttavia, quando si specificano le chiavi dei parametri di input, Guard richiede che non vi siano percorsi in conflitto. 

## Come usare
<a name="how-to-use-input-parameters"></a>

1. Utilizzate il `-i` flag `--input-parameters` o per specificare i file contenenti i parametri di input. È possibile specificare più file di parametri di input che verranno combinati per formare un contesto comune. Le chiavi dei parametri di input non possono avere percorsi in conflitto.

1. Utilizzate il `-d` flag `--data` o per specificare il file modello effettivo da convalidare. 

## Esempio di utilizzo
<a name="input-parameters-example-usage"></a>

1. Create un file di parametri di input (ad esempio,`network.yaml`): 

   ```
   NETWORK:
     allowed_security_groups: ["sg-282850", "sg-292040"]
     allowed_prefix_lists: ["pl-63a5400a", "pl-02cd2c6b"]
   ```

1. Fai riferimento a questi parametri nel tuo file guard rule (ad esempio,`security_groups.guard`): 

   ```
   let groups = Resources.*[ Type == 'AWS::EC2::SecurityGroup' ]
   
   let permitted_sgs = NETWORK.allowed_security_groups
   let permitted_pls = NETWORK.allowed_prefix_lists
   rule check_permitted_security_groups_or_prefix_lists(groups) {
       %groups {
           this in %permitted_sgs or
           this in %permitted_pls
       }
   }
   
   rule CHECK_PERMITTED_GROUPS when %groups !empty {
       check_permitted_security_groups_or_prefix_lists(
          %groups.Properties.GroupName
       )
   }
   ```

1. Crea un modello di dati non valido (ad esempio,`security_groups_fail.yaml`): 

   ```
   # ---
   # AWSTemplateFormatVersion: 2010-09-09
   # Description: CloudFormation - EC2 Security Group
   
   Resources:
     mySecurityGroup:
       Type: AWS::EC2::SecurityGroup
       Properties:
         GroupName: wrong
   ```

1. Esegui il comando validate: 

   ```
   cfn-guard validate -r security_groups.guard -i network.yaml -d security_groups_fail.yaml
   ```

   In questo comando:
   + `-r`specifica il file delle regole.
   + `-i`specifica il file dei parametri di input.
   + `-d`specifica il file di dati (modello) da convalidare.

## Parametri di input multipli
<a name="multiple-input-parameters"></a>

È possibile specificare più file di parametri di input: 

```
cfn-guard validate -r rules.guard -i params1.yaml -i params2.yaml -d template.yaml
```

Tutti i file specificati con `-i` verranno combinati per formare un unico contesto per la ricerca dei parametri. 