

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

En una plantilla de CloudFormation, puede utilizar `AWS::CloudFormation::Init` en la sección `Metadata` de un recurso de Amazon EC2 para definir las tareas de inicialización. Para obtener más información, consulte [`AWS::CloudFormation::Init`](aws-resource-init.md).

El script auxiliar `cfn-init` lee metadatos de plantilla de la clave `AWS::CloudFormation::Init` y actúa de forma acorde para lo siguiente:
+ Obtener y analizar metadatos de CloudFormation
+ Instalar paquetes
+ Escribir archivos en el disco
+ Habilitar/deshabilitar e iniciar/detener servicios

El script auxiliar `cfn-init` se suele ejecutar a partir de los datos de usuario de una instancia de Amazon EC2 o de una plantilla de lanzamiento.

Si es la primera vez que utiliza scripts auxiliares, le recomendamos que complete primero el tutorial [Implementación de aplicaciones en Amazon EC2](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) de la *Guía del usuario de AWS CloudFormation*.

**Topics**
+ [Sintaxis](#cfn-init-Syntax)
+ [Opciones](#cfn-init-options)
+ [Ejemplos](#cfn-init-examples)
+ [Recursos relacionados](#cfn-init-related-resources)

**nota**  
Si utiliza `cfn-init` para actualizar un archivo existente, crea una copia de seguridad del archivo original en el mismo directorio con una extensión .bak. Por ejemplo, si actualiza `/{{path}}/{{to}}/{{file_name}}`, la acción produce dos archivos: `/{{path}}/{{to}}/{{file_name}}.bak` incluye el contenido original del archivo y `/{{path}}/{{to}}/{{file_name}}` incluye los contenidos actualizados.

## Sintaxis
<a name="cfn-init-Syntax"></a>

```
cfn-init --stack|-s {{stack.name.or.id}} \
         --resource|-r {{logical.resource.id}} \
         --region {{region}} \
         --access-key {{access.key}} \
         --secret-key {{secret.key}} \
         --role {{rolename}} \
         --credential-file|-f {{credential.file}} \
         --configsets|-c {{config.sets}} \
         --url|-u {{service.url}} \
         --http-proxy {{HTTP.proxy}} \
         --https-proxy {{HTTPS.proxy}} \
         --verbose|-v
```

**nota**  
`cfn-init` 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).

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


| Nombre | Descripción | Obligatorio | 
| --- | --- | --- | 
|  `-s, --stack`  | Nombre o ID de la pila.<br />*Tipo:* cadena<br />*Valor predeterminado*: Ninguno<br />*Ejemplo de*: `--stack { "Ref" : "AWS::StackName" },` | Sí | 
|  `-r, --resource `  | El ID de recurso lógico del recurso que contiene los metadatos.<br />*Tipo:* cadena<br />*Ejemplo de*: `--resource WebServerHost` | Sí | 
|  `--region`  | El punto de enlace regional de CloudFormation que se debe utilizar.<br />*Tipo:* cadena<br />*Valor predeterminado*: `us-east-1`<br />*Ejemplo*:`--region ", { "Ref" : "AWS::Region" },` | No | 
|  `--access-key`  | Clave de acceso de AWS para una cuenta con permiso para llamar a `DescribeStackResource` en CloudFormation. El parámetro del archivo de credenciales sustituye a este parámetro.<br />*Tipo:* cadena | No | 
|  `--secret-key`  | Clave de acceso secreta de AWS que corresponde a la clave de acceso de AWS especificada.<br />*Tipo:* cadena | No | 
|  `--role`  | El nombre de un rol de IAM asociado a la instancia.<br />*Tipo:* cadena<br />Condición: El parámetro del archivo de credenciales sustituye a este parámetro. | No | 
|  `-f, --credential-file`  | 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.<br />*Tipo:* cadena | No | 
|  `-c, --configsets`  | Una lista separada por comas de configsets para ejecutar (en orden).<br />*Tipo:* cadena<br />*Valor predeterminado*: `default` | No | 
|  `-u, --url`  | El punto de enlace de CloudFormation que se debe usar.<br />*Tipo:* cadena | No | 
| `--http-proxy` | Un proxy HTTP (no SSL). Use el siguiente formato: `http://{{user:password}}@{{host}}:{{port}}`<br />*Tipo:* cadena | No | 
| `--https-proxy` | Un proxy HTTPS. Use el siguiente formato: `https://{{user:password}}@{{host}}:{{port}}`<br />*Tipo:* cadena | No | 
| `-v, --verbose` | Resultados detallados. Esto es útil para la depuración de casos en los que se produce un error en la inicialización de `cfn-init`. Para depurar eventos de inicialización, debe activar `DisableRollback`. A continuación, puede utilizar SSH en la consola y leer los registros en `/var/log/cfn-init.log`. Para obtener más información, consulte [Elija cómo gestionar los errores al aprovisionar recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) en la *Guía del usuario de AWS CloudFormation*.  | No | 
| `-h, --help` | Muestra un mensaje de ayuda y sale. | No | 

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

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

En los siguientes ejemplos se muestra la propiedad `UserData` de una instancia de EC2, que ejecuta el configset `InstallAndRun` asociado al recurso `WebServerInstance`.

Para incluir la última versión, agregue `yum install -y aws-cfn-bootstrap` a `UserData`.

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

Propiedad `UserData` que usa la función `Fn::Join` intrínseca.

```
{
    "UserData": {
        "Fn::Base64": {
            "Fn::Join": [
                "",
                [
                    "#!/bin/bash -xe\n",
                    "",
                    "yum install -y aws-cfn-bootstrap",
                    "/opt/aws/bin/cfn-init -v ",
                    "         --stack ",
                    {
                        "Ref": "AWS::StackName"
                    },
                    "         --resource WebServerInstance ",
                    "         --configsets InstallAndRun ",
                    "         --region ",
                    {
                        "Ref": "AWS::Region"
                    },
                    "\n"
                ]
            ]
        }
    }
}
```

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

Propiedad `UserData` que usa la función `Fn::Sub` intrínseca.

```
UserData:
  Fn::Base64: !Sub |
    #!/bin/bash -xe
    yum update -y aws-cfn-bootstrap
    # Install the files and packages from the metadata
    /opt/aws/bin/cfn-init -v --stack ${AWS::StackName} --resource WebServerInstance --configsets InstallAndRun --region ${AWS::Region}
```

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

Para ver un tutorial con una plantilla de ejemplo, consulte [Implementación de aplicaciones en Amazon EC2](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) en la *Guía del usuario de AWS CloudFormation*.

Para ver un ejemplo de Windows, consulte [Arranque de pilas de CloudFormation basadas en Windows](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-windows-stacks-bootstrapping.html) en la *Guía del usuario de AWS CloudFormation*.

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

Para ver ejemplos adicionales de plantillas de pila LAMP que utilicen `cfn-init`, consulte [ec2-lamp-server](https://github.com/aws-samples/ec2-lamp-server) en el sitio web de GitHub.