

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. *Tipo:* cadena *Valor predeterminado*: Ninguno *Ejemplo de*: `--stack { "Ref" : "AWS::StackName" },`  |  Sí  | 
|   `-r, --resource `   |  El ID de recurso lógico del recurso que contiene los metadatos. *Tipo:* cadena *Ejemplo de*: `--resource WebServerHost`  |  Sí  | 
|   `--region`   |  El punto de enlace regional de CloudFormation que se debe utilizar. *Tipo:* cadena *Valor predeterminado*: `us-east-1` *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. *Tipo:* cadena  |  No  | 
|   `--secret-key`   |  Clave de acceso secreta de AWS que corresponde a la clave de acceso de AWS especificada. *Tipo:* cadena  |  No  | 
|   `--role`   |  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  | 
|   `-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. *Tipo:* cadena  |  No  | 
|   `-c, --configsets`   |  Una lista separada por comas de configsets para ejecutar (en orden). *Tipo:* cadena *Valor predeterminado*: `default`  |  No  | 
|   `-u, --url`   |  El punto de enlace de CloudFormation que se debe usar. *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  | 
|  `-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.