

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Uso de parámetros de entrada con AWS CloudFormation Guard reglas
<a name="using-input-parameters"></a>

AWS CloudFormation Guard permite utilizar parámetros de entrada para búsquedas de datos dinámicos durante la validación. Esta función resulta especialmente útil cuando se necesita hacer referencia a datos externos en las reglas. Sin embargo, al especificar las claves de los parámetros de entrada, Guard requiere que no haya rutas conflictivas. 

## ¿Cómo se usa
<a name="how-to-use-input-parameters"></a>

1. Utilice el `-i` indicador `--input-parameters` o para especificar los archivos que contienen parámetros de entrada. Se pueden especificar varios archivos de parámetros de entrada y se combinarán para formar un contexto común. Las claves de parámetros de entrada no pueden tener rutas conflictivas.

1. Utilice el `-d` indicador `--data` o para especificar el archivo de plantilla real que se va a validar. 

## Ejemplo de uso
<a name="input-parameters-example-usage"></a>

1. Cree un archivo de parámetros de entrada (por ejemplo,`network.yaml`): 

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

1. Consulte estos parámetros en su archivo de reglas de protección (por ejemplo,`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. Cree una plantilla de datos defectuosa (por ejemplo,`security_groups_fail.yaml`): 

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

1. Ejecute el comando validate: 

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

   En este comando:
   + `-r`especifica el archivo de reglas.
   + `-i`especifica el archivo de parámetros de entrada.
   + `-d`especifica el archivo de datos (plantilla) que se va a validar.

## Múltiples parámetros de entrada
<a name="multiple-input-parameters"></a>

Puede especificar varios archivos de parámetros de entrada: 

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

Todos los archivos especificados con se `-i` combinarán para formar un contexto único para la búsqueda de parámetros. 