

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-signal
<a name="cfn-signal"></a>

El script auxiliar `cfn-signal` envía una señal a CloudFormation para indicar si se han creado o actualizado correctamente instancias de Amazon EC2. Si instala y configura aplicaciones de software en instancias, puede enviar una señal a CloudFormation cuando dichas aplicaciones de software estén listas.

Debe usar el script `cfn-signal` junto con un [Atributo `CreationPolicy`](aws-attribute-creationpolicy.md) o un [`UpdatePolicy`Atributo](aws-attribute-updatepolicy.md) con `WaitOnResourceSignals` para los grupos de Amazon EC2 Auto Scaling. Cuando CloudFormation crea o actualiza recursos con esas políticas, suspende el trabajo en la pila hasta que el recurso reciba el número necesario de señales o hasta que se supere el periodo de tiempo de espera. Para cada señal válida que CloudFormation recibe, publica las señales en los eventos de la pila para que pueda hacer un seguimiento de cada una de ellas.

**Topics**
+ [Sintaxis para la señalización de recursos (recomendado)](#w2aac32c29b9)
+ [Sintaxis para identificador de condición de espera](#cfn-signal-Syntaxwaitcondition)
+ [Opciones](#cfn-signal-options)
+ [Ejemplos](#cfn-signal-examples)
+ [Recursos relacionados](#cfn-signal-related-resources)

## Sintaxis para la señalización de recursos (recomendado)
<a name="w2aac32c29b9"></a>

Si desea señalar recursos de CloudFormation, utilice la siguiente sintaxis.

```
cfn-signal --success|-s signal.to.send \
        --access-key access.key \
        --credential-file|-f credential.file \
        --exit-code|-e exit.code \
        --http-proxy HTTP.proxy \
        --https-proxy HTTPS.proxy \
        --id|-i unique.id \
        --region AWS.region \
        --resource resource.logical.ID \
        --role IAM.role.name \
        --secret-key secret.key \
        --stack stack.name.or.stack.ID \
        --url CloudFormation.endpoint
```

**nota**  
`cfn-signal` no requiere credenciales, por lo que no tiene que usar las opciones `--access-key`, `--secret-key`, `--role` ni `--credential-file`. Sin embargo, si no se especifican credenciales, CloudFormation comprueba la pertenencia a la pila y limita el ámbito de la llamada a la pila al que pertenece a la instancia. Para obtener más información, consulte [Permisos para los scripts auxiliares](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions).

## Sintaxis para identificador de condición de espera
<a name="cfn-signal-Syntaxwaitcondition"></a>

Si desea señalar un identificador de condición de espera, utilice la siguiente sintaxis.

```
cfn-signal --success|-s signal.to.send \
        --reason|-r resource.status.reason \
        --data|-d data \
        --id|-i unique.id \
        --exit-code|-e exit.code \
        waitconditionhandle.url
```

## Opciones
<a name="cfn-signal-options"></a>

Las opciones que puede utilizar dependerán de si está señalando una política de creación o un identificador de condición de espera. Algunas opciones que se aplican a una política de creación podrían no aplicarse a un identificador de condición de espera.


| Nombre | Descripción | Obligatorio | 
| --- | --- | --- | 
|  `--access-key` (señalización de recursos solamente)  |  Clave de acceso de AWS para una cuenta con permiso para llamar a la API `SignalResource ` de CloudFormation. El parámetro del archivo de credenciales sustituye a este parámetro. *Tipo:* cadena  |  No  | 
|  `-d, --data` (identificador de condición de espera solamente)  |  Datos para enviar de vuelta con el `waitConditionHandle`. Cambia por defecto a en blanco. *Tipo:* cadena *Valor predeterminado*: en blanco  |  No  | 
|  `-e, --exit-code`   |  El código de error de un proceso que puede utilizarse para determinar se realizó correctamente o dio un error. Si se especifica, se pasa por alto la opción `--success`. *Tipo:* cadena *Ejemplos*: `-e $?` (para Linux), `-e %ERRORLEVEL%` (para Windows cmd.exe) y `-e $lastexitcode` (para Windows PowerShell).  |  No  | 
|  `-f, --credential-file` (señalización de recursos solamente)  |  Un archivo que contiene una clave de acceso secreta y una clave de acceso. El parámetro del archivo de credenciales sustituye a los parámetros --role, --access-key y --secret-key. *Tipo:* cadena  |  No  | 
|  `--http-proxy`  |  Un proxy HTTP (no SSL). Use el siguiente formato: `http://user:password@host:port` *Tipo:* cadena  |  No  | 
|  `--https-proxy`  |  Un proxy HTTPS. Use el siguiente formato: `https://user:password@host:port` *Tipo:* cadena  |  No  | 
|  `-i, --id`  |  El ID único para enviar. *Tipo:* cadena *Valor predeterminado*: El ID de la instancia Amazon EC2. Si no se puede resolver el ID, se devuelve el nombre de dominio completo.  |  No  | 
|  `-r, --reason ` (identificador de condición de espera solamente)  |  Una razón para el estado del evento del recurso (actualmente solo se utiliza en caso de error) - cambia por defecto a “Configuration failed” (Error de configuración) si el éxito es falso. *Tipo:* cadena  |  No  | 
| --region (señalización de recursos solamente) |  El punto de enlace regional de CloudFormation que se debe utilizar. *Tipo:* cadena *Valor predeterminado*: `us-east-1`  |  No  | 
| --resource (señalización de recursos solamente) |  El ID lógico del recurso que contiene la política de creaciones que desea señalar. *Tipo:* cadena  |  Sí  | 
|  `--role` (señalización de recursos solamente)  |  El nombre de un rol de IAM asociado a la instancia. *Tipo:* cadena Condición: El parámetro del archivo de credenciales sustituye a este parámetro.  |  No  | 
|  `-s, --success`   |  Si es true, señal `SUCCESS`, de lo contrario `FAILURE`. *Tipo*: Booleano *Valor predeterminado*: `true`  |  No  | 
|  `--secret-key` (señalización de recursos solamente)  |  Clave de acceso secreta de AWS que corresponde a la clave de acceso de AWS especificada. *Tipo:* cadena  |  No  | 
|  `--stack` (señalización de recursos solamente)  |  El nombre de la pila o ID de la pila que contiene el recurso que desea señalar. *Tipo:* cadena  |  Sí  | 
| -u, --url (señalización de recursos solamente) |  El punto de enlace de CloudFormation que se debe usar. *Tipo:* cadena  |  No  | 
|  `waitconditionhandle.url` (identificador de condición de espera solamente)  |  Una URL prefirmada que puede utilizar para señalar el éxito o el error de una asociada `WaitCondition` *Tipo:* cadena  |  Sí  | 

## Ejemplos
<a name="cfn-signal-examples"></a>

### Ejemplo de Amazon Linux
<a name="w2aac32c29c15b3"></a>

Un patrón de uso común consiste en utilizar `cfn-init` y `cfn-signal` a la vez. La llamada a `cfn-signal` usa el estado de la devolución de la llamada a `cfn-init` (utilizando el constructo del intérprete de comandos \$1?). Si no se puede instalar la aplicación, no se creará la instancia y se restaurará la pila.

#### JSON
<a name="cfn-signal-example.json"></a>

```
{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Description": "Simple EC2 instance",
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Metadata": {
                "AWS::CloudFormation::Init": {
                    "config": {
                        "files": {
                            "/tmp/test.txt": {
                                "content": "Hello world!",
                                "mode": "000755",
                                "owner": "root",
                                "group": "root"
                            }
                        }
                    }
                }
            },
            "Properties": {
                "ImageId": "{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}",
                "InstanceType": "t2.micro",
                "UserData": {
                    "Fn::Base64": {
                        "Fn::Join": [
                            "",
                            [
                                "#!/bin/bash -x\n",
                                "# Install the files and packages from the metadata\n",
                                "yum install -y aws-cfn-bootstrap",
                                "\n",
                                "/opt/aws/bin/cfn-init -v ",
                                "         --stack ",
                                {
                                    "Ref": "AWS::StackName"
                                },
                                "         --resource MyInstance ",
                                "         --region ",
                                {
                                    "Ref": "AWS::Region"
                                },
                                "\n",
                                "# Signal the status from cfn-init\n",
                                "/opt/aws/bin/cfn-signal -e $? ",
                                "         --stack ",
                                {
                                    "Ref": "AWS::StackName"
                                },
                                "         --resource MyInstance ",
                                "         --region ",
                                {
                                    "Ref": "AWS::Region"
                                },
                                "\n"
                            ]
                        ]
                    }
                }
            },
            "CreationPolicy": {
                "ResourceSignal": {
                    "Timeout": "PT5M"
                }
            }
        }
    }
}
```

#### YAML
<a name="cfn-signal-example.yaml"></a>

```
AWSTemplateFormatVersion: 2010-09-09
Description: Simple EC2 instance
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Metadata:
      'AWS::CloudFormation::Init':
        config:
          files:
            /tmp/test.txt:
              content: Hello world!
              mode: '000755'
              owner: root
              group: root
    Properties:
      ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2}}'
      InstanceType: t2.micro
      UserData:
        Fn::Base64: !Sub |
          #!/bin/bash -x
          # Install the files and packages from the metadata
          yum install -y aws-cfn-bootstrap
          /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}
          # Signal the status from cfn-init
          /opt/aws/bin/cfn-signal -e $? --stack ${AWS::StackName} --resource MyInstance --region ${AWS::Region}
    CreationPolicy:
      ResourceSignal:
        Timeout: PT5M
```

## Recursos relacionados
<a name="cfn-signal-related-resources"></a>

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-signal`, 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) 