

# Validación de plantillas con Guard
<a name="cloudformation-guard"></a>

AWS CloudFormation Guard (`cfn-guard`) es una herramienta de política como código. Se escriben reglas que describen las configuraciones obligatorias o prohibidas y luego se comprueba si los datos JSON o YAML cumplen dichas reglas. Por ejemplo, usted puede requerir que todos los buckets de Amazon S3 de una plantilla utilicen el cifrado.

Para conocer las limitaciones de la validación local y los pasos a seguir antes de la implementación, consulte [Descripción del alcance de validación](template-guide.md#template-validation-scope).

**Topics**
+ [Instalación de Guard](#cloudformation-guard-install)
+ [Escritura de una regla](#cloudformation-guard-write-rule)
+ [Validación de una plantilla](#cloudformation-guard-validate)
+ [Incorporación de Guard a su flujo de trabajo](#cloudformation-guard-integrate)
+ [Más información](#cloudformation-guard-learn-more)

## Instalación de Guard
<a name="cloudformation-guard-install"></a>

En macOS, instale Guard con Homebrew:

```
brew install cloudformation-guard
```

Para Linux, Windows, otros métodos de instalación de macOS y verificación de versiones, consulte [Configuración de AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/setting-up.html).

## Escritura de una regla
<a name="cloudformation-guard-write-rule"></a>

Guarde las reglas en un archivo con la extensión `.guard`. El siguiente ejemplo requiere que cada bucket de Amazon S3 de una plantilla especifique el cifrado del bucket:

```
let s3_buckets = Resources.*[ Type == 'AWS::S3::Bucket' ]

rule S3_BUCKET_ENCRYPTED when %s3_buckets !empty {
  %s3_buckets {
    Properties.BucketEncryption exists
  }
}
```

Para ver la sintaxis de las reglas y otros ejemplos, consulte [Redacción de reglas de AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/writing-rules.html).

## Validación de una plantilla
<a name="cloudformation-guard-validate"></a>

Pase el archivo de reglas a `--rules` y la plantilla a `--data`:

```
cfn-guard validate --rules rules.guard --data template.yaml
```

El comando devuelve el estado de salida `0` cuando se aprueba la plantilla. Si se produce un error en una regla, el resultado identifica la regla que ha fallado. También puede pasar directorios a `--rules` y `--data` para comprobar varios archivos.

Antes de usar una regla en un flujo de trabajo automatizado, pruébela con el soporte integrado de pruebas unitarias. Para obtener instrucciones, consulte [Prueba de reglas de AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/testing-rules.html).

## Incorporación de Guard a su flujo de trabajo
<a name="cloudformation-guard-integrate"></a>

Puede ejecutar Guard de forma local, en una compilación automática o antes de una confirmación de Git. El servidor de lenguaje de CloudFormation también puede ejecutar paquetes de reglas de Guard mientras se edita una plantilla. Para obtener información sobre la configuración, consulte [Servidor de lenguaje de CloudFormation](ide-extension.md).

Para aplicar reglas durante las operaciones de las API de CloudFormation y Cloud Control, use enlaces de Guard. Para obtener más información, consulte [Guard Hooks](https://docs.aws.amazon.com/cloudformation-cli/latest/hooks-userguide/guard-hooks.html).

## Más información
<a name="cloudformation-guard-learn-more"></a>

Para obtener una referencia completa sobre el lenguaje y los comandos, consulte la [Guía del usuario de AWS CloudFormation Guard](https://docs.aws.amazon.com/cfn-guard/latest/ug/what-is-guard.html). El código de origen y la información de publicación están disponibles en el [repositorio de AWS CloudFormation Guard en GitHub](https://github.com/aws-cloudformation/cloudformation-guard).