

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usando parâmetros de entrada com AWS CloudFormation Guard regras
<a name="using-input-parameters"></a>

AWS CloudFormation Guard permite que você use parâmetros de entrada para pesquisas dinâmicas de dados durante a validação. Esse recurso é particularmente útil quando você precisa referenciar dados externos em suas regras. No entanto, ao especificar as chaves dos parâmetros de entrada, o Guard exige que não haja caminhos conflitantes. 

## Como usar
<a name="how-to-use-input-parameters"></a>

1. Use o `-i` sinalizador `--input-parameters` ou para especificar arquivos contendo parâmetros de entrada. Vários arquivos de parâmetros de entrada podem ser especificados e combinados para formar um contexto comum. As teclas de parâmetros de entrada não podem ter caminhos conflitantes.

1. Use o `-d` sinalizador `--data` ou para especificar o arquivo de modelo real a ser validado. 

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

1. Crie um arquivo de parâmetros de entrada (por exemplo,`network.yaml`): 

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

1. Faça referência a esses parâmetros em seu arquivo de regras de proteção (por exemplo,`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. Crie um modelo de dados com falha (por exemplo,`security_groups_fail.yaml`): 

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

1. Execute o comando validate: 

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

   Neste comando:
   + `-r`especifica o arquivo de regras.
   + `-i`especifica o arquivo de parâmetros de entrada.
   + `-d`especifica o arquivo de dados (modelo) a ser validado.

## Vários parâmetros de entrada
<a name="multiple-input-parameters"></a>

Você pode especificar vários arquivos de parâmetros de entrada: 

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

Todos os arquivos especificados com `-i` serão combinados para formar um único contexto para pesquisa de parâmetros. 