

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

El [proyecto `cloudformation-validate`](https://github.com/aws-cloudformation/cloudformation-validate) de código abierto comprueba las plantillas de CloudFormation en JSON y YAML de forma local y está disponible en GitHub. Puede encontrar una estructura de plantilla no válida, referencias rotas, problemas de seguridad y problemas relacionados con las prácticas recomendadas. Cada resultado incluye el problema, su gravedad y su ubicación en la plantilla.

La herramienta incluye las reglas y las definiciones de recursos de CloudFormation que necesita, por lo que se ejecuta sin acceso a la red ni credenciales de AWS después de la instalación.

**Topics**
+ [Seleccione un método de validación.](#cloudformation-validate-ways-to-use)
+ [Instalación de la herramienta de línea de comandos](#cloudformation-validate-install)
+ [Ejecución de la validación](#cloudformation-validate-run)
+ [Adición de reglas personalizadas](#cloudformation-validate-custom-rules)
+ [Inserción de la biblioteca de validación](#cloudformation-validate-library)
+ [Use con AWS CDK](#cloudformation-validate-cdk)
+ [Descripción del alcance de validación](#cloudformation-validate-scope)

## Seleccione un método de validación.
<a name="cloudformation-validate-ways-to-use"></a>
+ **Línea de comandos**: ejecute `cfn-validate` para comprobar una plantilla o todas las plantillas de un directorio desde una terminal o una compilación automática.
+ **Biblioteca**: agregue el validador a una aplicación de Rust, Node.js, Python, Go o JVM y procese los resultados en su código.
+ **AWS CDK**: valide las plantillas automáticamente después de que CDK las sintetice.
+ **Reglas personalizadas**: agregue comprobaciones escritas en CEL, Rego o el lenguaje de reglas de Guard. Para ver ejemplos y formatos de reglas compatibles, consulte la [Referencia de reglas personalizadas](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/CUSTOM_RULES.md) en GitHub. Para ver la sintaxis de las reglas de Guard, consulte [Validación de plantillas con Guard](cloudformation-guard.md) en esta guía.

## Instalación de la herramienta de línea de comandos
<a name="cloudformation-validate-install"></a>

Abra la [última versión de `cfn-validate`](https://github.com/aws-cloudformation/cloudformation-validate/releases/latest) en GitHub y descargue el archivo `cfn-validate` para su sistema operativo y procesador. Siga la [guía de instalación](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/INSTALLATION.md) en GitHub para cambiar el nombre del archivo a `cfn-validate`, agregarlo a su `PATH` y verificar el archivo descargado.

## Ejecución de la validación
<a name="cloudformation-validate-run"></a>

El comando utiliza la siguiente sintaxis:

```
cfn-validate {{TEMPLATE_OR_DIRECTORY}} [OPTIONS]
```

Compruebe una plantilla:

```
cfn-validate template.yaml
```

Pase un directorio para comprobar de forma recursiva todos los archivos `.yaml`, `.yml` y `.json`:

```
cfn-validate ./templates/
```

El comando escribe un informe de validación JSON estructurado en la salida estándar. Utilice `--format standard` para una salida compacta o `--format detailed` para el informe detallado predeterminado.

El comando devuelve `0` cuando no encuentra ningún error o diagnóstico grave, `1` cuando detecta un error o diagnóstico grave y `2` si se produce un error de uso o de inicialización, como una opción no válida o un archivo que no existe.

Para ver todos los motores, filtros, formatos de salida y parámetros, consulte la [referencia de la CLI de `cfn-validate`](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/cfn-validate/README.md) en GitHub.

## Adición de reglas personalizadas
<a name="cloudformation-validate-custom-rules"></a>

Utilice `--rule-source` para cargar un archivo de reglas Rego o CEL personalizado. Utilice `--guard-rule-source` para cargar un directorio o archivo de reglas de Guard. Puede repetir cualquiera de las dos opciones para cargar varios orígenes de reglas:

```
cfn-validate template.yaml --rule-source ./rules/my-rule.rego
cfn-validate template.yaml --guard-rule-source ./guard-rules/
```

Para ver ejemplos y formatos de reglas, consulte la [Referencia de reglas personalizadas](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/CUSTOM_RULES.md) en GitHub.

## Inserción de la biblioteca de validación
<a name="cloudformation-validate-library"></a>

Instale el paquete publicado para su lenguaje de programación para ejecutar las mismas comprobaciones sin conexión desde su aplicación. Cree un motor de validación una vez, reutilícelo para varias plantillas y procese los diagnósticos estructurados devueltos para cada plantilla. También puede configurar reglas CEL, Rego o Guard personalizadas a través de la API de la biblioteca.


| Idioma | Paquete publicado | API y ejemplos | 
| --- | --- | --- | 
| Rust | [`cloudformation-validate` en crates.io](https://crates.io/crates/cloudformation-validate) | [API de Rust y ejemplos](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/bindings-rust/README.md) | 
| Node.js | [`@aws/cloudformation-validate` en npm](https://www.npmjs.com/package/@aws/cloudformation-validate) | [API de Node.js y ejemplos](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/bindings-wasm/README.md) | 
| Python | [`cloudformation-validate` en PyPI](https://pypi.org/project/cloudformation-validate/) | [API de Python y ejemplos](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/bindings-python/README.md) | 
| Go | [Módulo validación CloudFormation de Go](https://pkg.go.dev/github.com/aws-cloudformation/cloudformation-validate/src/bindings-go/go) | [API de Go y ejemplos](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/bindings-go/README.md) | 
| JVM (Java o Kotlin) | [`software.amazon.cloudformation:cloudformation-validate` en Central de Maven](https://central.sonatype.com/artifact/software.amazon.cloudformation/cloudformation-validate) | [API de JVM y ejemplos](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/src/bindings-jvm/README.md) | 

Para ver las instrucciones de instalación y las plataformas compatibles, consulte la [guía de instalación de enlaces de idiomas](https://github.com/aws-cloudformation/cloudformation-validate/blob/main/INSTALLATION.md#language-bindings).

Para ver ejemplos completos en todos los idiomas y enlaces a cada guía de API, consulte [Embedding as a library](https://github.com/aws-cloudformation/cloudformation-validate#embedding-as-a-library) en la documentación del proyecto en GitHub.

## Use con AWS CDK
<a name="cloudformation-validate-cdk"></a>

Si utiliza AWS CDK, no necesita instalar el validador por separado. La biblioteca de construcciones de AWS CDK incluye un valor predeterminado `CloudFormationValidatePlugin` que ejecuta automáticamente las mismas comprobaciones después de sintetizar las plantillas de CloudFormation.

```
cdk synth
```

CDK informa de los posibles errores de implementación y de los resultados de las prácticas recomendadas junto con sus resultados de validación. Puede configurar de forma explícita `CloudFormationValidatePlugin` cuando quiera agregar reglas Rego o Guard personalizadas.

Para obtener información sobre la configuración de los complementos, las confirmaciones y los informes de validación, consulte [Template and Policy Validation](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib-readme.html#template-and-policy-validation) en la *Referencia de la API de AWS CDK*.

## Descripción del alcance de validación
<a name="cloudformation-validate-scope"></a>

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