

Esta es la nueva *Guía de referencia de plantillas de CloudFormation*. Actualice sus marcadores y enlaces. Para obtener ayuda sobre cómo empezar a usar CloudFormation, consulte la [Guía del usuario de AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# cfn-hup


El script auxiliar `cfn-hup` es un daemon que detecta cambios en los metadatos de recursos y ejecuta acciones especificadas por el usuario cuando se detecta un cambio. Esto le permite llevar a cabo actualizaciones de la configuración en las instancias de Amazon EC2 que se están ejecutando a través de la acción de la API `UpdateStack`.

Para obtener más información, consulte el tutorial [Actualización de una pila de CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/updating.stacks.walkthrough.html) en la *Guía del usuario de AWS CloudFormation*.

**Topics**
+ [

## Sintaxis
](#cfn-hup-Syntax)
+ [

## Opciones
](#cfn-hup-options)
+ [

## Archivo de configuración cfn-hup.conf
](#cfn-hup-config-file)
+ [

## `hooks.conf`Archivo de configuración de la
](#cfn-hup-hook-file)
+ [

## Directorio `hooks.d`
](#cfn-hup-hooks-dir)
+ [

## Ejemplos
](#cfn-hup-examples)
+ [

## Recursos relacionados
](#cfn-hup-related-resources)

## Sintaxis


```
cfn-hup --config|-c config.dir \
        --no-daemon \
        --verbose|-v
```

## Opciones



| Nombre | Descripción | Obligatorio | 
| --- | --- | --- | 
|   `--config\|-c config.dir`   |  Especifica la ruta que el script `cfn-hup` busca para los directorios `cfn-hup.conf` y `hooks.d`. En Windows, la ruta predeterminada es `system_drive\cfn`. En Linux, la ruta predeterminada es `/etc/cfn`.  |  No  | 
|   `--no-daemon`   |  Especifique esta opción para ejecutar el script `cfn-hup` una vez y salir.  |  No  | 
|   `-v, --verbose `   |  Especifique esta opción para utilizar el modo detallado.  |  No  | 

## Archivo de configuración cfn-hup.conf


En el archivo `cfn-hup.conf` se almacena el nombre de la pila y las credenciales de AWS a las cuales se dirige el daemon `cfn-hup`.

El archivo `cfn-hup.conf` usa el formato siguiente:

```
[main]
stack=<stack-name-or-id>
```


| Nombre | Descripción | Obligatorio | 
| --- | --- | --- | 
|   `stack`   |  Un nombre de pila o ID. *Tipo:* cadena  |  Sí  | 
|   `credential-file`   |  Un archivo de credencial exclusivo del propietario, en el mismo formato utilizado para las herramientas de líneas de comandos. *Tipo:* cadena *Condición*: el parámetro `role` sustituye a este parámetro.  |  No  | 
|   `role`   |  El nombre de un rol de IAM asociado a la instancia. *Tipo:* cadena  |  No  | 
|   `region`   |  Nombre de la Región de AWS que contiene la pila. *Ejemplo*: us-east-2  |  No  | 
|   `umask`   |  `umask` que usa el daemon `cfn-hup`. Este valor se puede especificar con o sin 0 inicial. En ambos casos, se interpreta como un número octal (similar al comando `umask` de Linux). Este parámetro no tiene efecto en Windows. *Tipo*: número entero octal entre `0` y `0777` *Valor predeterminado*: `022`, versión 1.4–22 y superiores. El valor predeterminado `022` oculta permisos de escritura de grupo y mundiales, por lo que los archivos creados por el daemon `cfn-hup` no cuentan con permisos de escritura de grupo ni mundiales de forma predeterminada. El valor predeterminado para las versiones que comprenden de la 1.4 a la 21 y versiones anteriores es `0`, que no oculta nada.  |  No  | 
|   `interval`   |  El intervalo usado para comprobar si hay cambios en los metadatos de recursos en cuestión de minutos. *Tipo*: entero *Valor predeterminado*: `15`  |  No  | 
|   `verbose`   |  Especifica si se debe utilizar el registro detallado. *Tipo*: Booleano *Valor predeterminado*: `false`  |  No  | 

## `hooks.conf`Archivo de configuración de la


Las acciones del usuario a las que el daemon `cfn-hup` llama periódicamente se definen en el archivo de configuración `hooks.conf`. El archivo `hooks.conf` usa el *formato* siguiente:

```
[hookname]
triggers=post.add or post.update or post.remove
path=Resources.<logicalResourceId> (.Metadata or .PhysicalResourceId)(.<optionalMetadatapath>)
action=<arbitrary shell command>
runas=<runas user>
```

Cuando se ejecuta la operación, se ejecuta en una copia del entorno actual (en el que se encuentra `cfn-hup`), con `CFN_OLD_METADATA` establecido en el valor de metadatos anterior especificado por ruta y `CFN_NEW_METADATA` establecido en el valor actual.

El archivo de configuración de enlaces se carga solo al iniciarse el daemon `cfn-hup`, de manera que los nuevos enlaces necesitarán que se reinicie el daemon. Se almacena una memoria caché de los valores de metadatos anteriores en `/var/lib/cfn-hup/data/metadata_db`, pero puede eliminarla para forzar `cfn-hup` y que se ejecuten de nuevo todas las acciones `post.add`.


| Nombre | Descripción | Obligatorio | 
| --- | --- | --- | 
|   `hookname`   |  Un nombre único para este enlace. *Tipo:* cadena  |  Sí  | 
|   `triggers`   |  Una lista delimitada por comas de condiciones para detectar. *Valores válidos*: `post.add`, `post.update` o `post.remove` *Ejemplo de*: `post.add, post.update`  |  Sí  | 
|   `path`   |  La ruta al objeto de los metadatos. Admite una ruta de profundidad arbitraria dentro del bloque de metadatos.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/AWSCloudFormation/latest/TemplateReference/cfn-hup.html)  |  Sí  | 
|   `action`   |  Un comando de shell arbitrario que se ejecuta como determinado.  |  Sí  | 
|   `runas`   |  Usuario con el que ejecutar los comandos. `cfn-hup` utiliza el comando su para cambiar al usuario.  |  Sí  | 

## Directorio `hooks.d`


Para permitir la composición de varias aplicaciones que implementan enlaces de notificación de cambios, `cfn-hup` admite un directorio denominado `hooks.d` que se encuentra en el directorio de configuración de enlaces. Puede meter uno o varios archivos de configuración de enlaces adicionales en el directorio `hooks.d`. Los archivos de enlaces adicionales deben utilizar el mismo formato que el archivo `hooks.conf`.

El daemon `cfn-hup` analiza y carga cada archivo en este directorio. Si algún enlace del directorio `hooks.d` tiene el mismo nombre que un enlace de `hooks.conf`, los enlaces se fusionarán (es decir, `hooks.d` sobrescribirá a `hooks.conf` para cualquier valor que se especifique en ambos archivos).

## Ejemplos


En el siguiente ejemplo, CloudFormation desencadena el archivo de enlaces `cfn-auto-reloader.conf` cuando cambia el recurso `AWS::CloudFormation::Init` que está asociado al recurso `LaunchConfig`.

### JSON


```
...
    "LaunchConfig": {
      "Type" : "AWS::AutoScaling::LaunchConfiguration",
      "Metadata" : {
        "AWS::CloudFormation::Init" : {
...
              "/etc/cfn/hooks.d/cfn-auto-reloader.conf": {
                "content": { "Fn::Join": [ "", [
                  "[cfn-auto-reloader-hook]\n",
                  "triggers=post.update\n",
                  "path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init\n",
                  "action=/opt/aws/bin/cfn-init -v ",
                          "         --stack ", { "Ref" : "AWS::StackName" },
                          "         --resource LaunchConfig ",
                          "         --configsets wordpress_install ",
                          "         --region ", { "Ref" : "AWS::Region" }, "\n",
                  "runas=root\n"
                ]]},          
                "mode"  : "000400",
                "owner" : "root",
                "group" : "root"
              }
...
```

### YAML


```
...
  LaunchConfig:
    Type: AWS::AutoScaling::LaunchConfiguration
    Metadata:
      AWS::CloudFormation::Init:
...
            /etc/cfn/hooks.d/cfn-auto-reloader.conf:
              content: !Sub |
                [cfn-auto-reloader-hook]
                triggers=post.update
                path=Resources.LaunchConfig.Metadata.AWS::CloudFormation::Init
                action=/opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource LaunchConfig --configsets wordpress_install --region ${AWS::Region}
                runas=root
              mode: "000400"
              owner: "root"
              group: "root"
...
```

## Recursos relacionados


También puede visitar nuestro repositorio de GitHub para descargar las [plantillas de ejemplo](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates) que usan `cfn-hup`, entre las que se incluyen las siguientes.
+  [InstanceWithCfnInit.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/EC2/InstanceWithCfnInit.yaml) 
+  [AutoScalingRollingUpdates.yaml](https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/AutoScaling/AutoScalingRollingUpdates.yaml) 