

Este é o novo *Guia de referência de modelos do CloudFormation*. Atualize seus favoritos e links. Para obter ajuda para começar a usar o CloudFormation, consulte o [Guia do usuário do AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

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

Em um modelo do CloudFormation, você pode usar `AWS::CloudFormation::Init` na seção `Metadata` de um recurso do Amazon EC2 para definir tarefas de inicialização. Para obter mais informações, consulte [`AWS::CloudFormation::Init`](aws-resource-init.md).

O script auxiliar `cfn-init` lê os metadados do modelo na chave `AWS::CloudFormation::Init` e atua de acordo para:
+ Obter e analisar metadados do CloudFormation
+ Instalar pacotes
+ Gravar arquivos no disco
+ Ativar/desativar e iniciar/interromper serviços

O script auxiliar `cfn-init` geralmente é executado a partir dos dados do usuário de uma instância do Amazon EC2 ou do modelo de execução.

Caso esteja começando a usar scripts auxiliares, recomendamos que primeiro conclua o tutorial [Implantar aplicações no Amazon EC2](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) no *Guia do usuário do AWS CloudFormation*.

**Topics**
+ [Sintaxe](#cfn-init-Syntax)
+ [Opções](#cfn-init-options)
+ [Exemplos](#cfn-init-examples)
+ [Recursos relacionados](#cfn-init-related-resources)

**nota**  
Se você usar `cfn-init` para atualizar um arquivo existente, ele cria uma cópia de backup do arquivo original com uma extensão .bak no mesmo diretório. Por exemplo, se você atualizar `/{{path}}/{{to}}/{{file_name}}`, essa ação produzirá dois arquivos: `/{{path}}/{{to}}/{{file_name}}.bak` contém o conteúdo do arquivo original e `/{{path}}/{{to}}/{{file_name}}` contém o conteúdo atualizado.

## Sintaxe
<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` não exige credenciais; portanto, você não precisa usar as opções `--access-key`, `--secret-key`, `--role` ou `--credential-file`. No entanto, se nenhuma credencial for especificada, o CloudFormation verificará se há associação de pilha e limitará o escopo da chamada para a pilha à qual a instância pertence. Para obter mais informações, consulte [Permissões para scripts auxiliares](cfn-helper-scripts-reference.md#cfn-helper-scripts-reference-permissions).

## Opções
<a name="cfn-init-options"></a>


| Name (Nome) | Descrição | Obrigatório | 
| --- | --- | --- | 
|  `-s, --stack`  | Nome ou ID da pilha.<br />*Tipo:* string<br />*Padrão*: nenhum<br />*Exemplo da*: `--stack { "Ref" : "AWS::StackName" },` | Sim | 
|  `-r, --resource `  | O ID de recursos lógicos do recurso que contém os metadados.<br />*Tipo:* string<br />*Exemplo da*: `--resource WebServerHost` | Sim | 
|  `--region`  | O endpoint regional do CloudFormation a ser usado.<br />*Tipo:* string<br />*Padrão*: `us-east-1`<br />*Exemplo*:`--region ", { "Ref" : "AWS::Region" },` | Não | 
|  `--access-key`  | A chave de acesso da AWS para uma conta com permissão para chamar `DescribeStackResource` no CloudFormation. O parâmetro do arquivo de credencial substitui este parâmetro.<br />*Tipo:* string | Não | 
|  `--secret-key`  | A chave de acesso secreta da AWS que corresponde a uma chave de acesso específica da AWS.<br />*Tipo:* string | Não | 
|  `--role`  | O nome de um perfil do IAM que está associado à instância.<br />*Tipo:* string<br />Condição: o parâmetro do arquivo de credencial substitui este parâmetro. | Não | 
|  `-f, --credential-file`  | Um arquivo que contém uma chave de acesso secreta e uma chave de acesso. O parâmetro do arquivo de credencial substitui os parâmetros --role, --access-key e --secret-key.<br />*Tipo:* string | Não | 
|  `-c, --configsets`  | Uma lista separada por vírgulas de configsets para executar (em ordem).<br />*Tipo:* string<br />*Padrão*: `default` | Não | 
|  `-u, --url`  | O endpoint do CloudFormation a ser usado.<br />*Tipo:* string | Não | 
| `--http-proxy` | Um proxy HTTP (não SSL). Use o seguinte formato: `http://{{user:password}}@{{host}}:{{port}}`.<br />*Tipo:* string | Não | 
| `--https-proxy` | Um proxy HTTPS. Use o seguinte formato: .: `https://{{user:password}}@{{host}}:{{port}}`<br />*Tipo:* string | Não | 
| `-v, --verbose` | Saída detalhada. Isso é útil para os casos de depuração em que ocorre falha ao inicializar `cfn-init`. Para depurar eventos de inicialização, você deve ativar `DisableRollback`. Depois, você pode inserir o SSH no console e ler os logs em `/var/log/cfn-init.log`. Para obter mais informações, consulte [Escolher como lidar com falhas ao provisionar recursos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stack-failure-options.html) no *Guia do usuário do AWS CloudFormation*.  | Não | 
| `-h, --help` | Mostra a mensagem de ajuda e sai. | Não | 

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

### Exemplos do Amazon Linux
<a name="w2aac32c27c21b3"></a>

Os exemplos a seguir mostram a propriedade `UserData` de uma instância do EC2, que executa o `InstallAndRun` associado ao recurso `WebServerInstance`.

Para incluir a versão mais recente, adicione `yum install -y aws-cfn-bootstrap` a `UserData`.

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

Propriedade `UserData` utilizando a função `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>

Propriedade `UserData` utilizando a função `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 um tutorial com um modelo de exemplo, consulte [Implantar aplicações no Amazon EC2](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/deploying.applications.html) no *Guia do usuário do AWS CloudFormation*.

Para um exemplo do Windows, consulte [Fazer o bootstrap de pilhas do CloudFormation baseadas em Windows](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-windows-stacks-bootstrapping.html) no *Guia do usuário do AWS CloudFormation*.

Você também pode visitar nosso repositório no GitHub para baixar [exemplos de modelo](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html#sample-templates) que usam `cfn-init`, incluindo os que se seguem.
+  [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 obter modelos de exemplo de pilha LAMP que usam `cfn-init`, consulte [ec2-lamp-server](https://github.com/aws-samples/ec2-lamp-server) no site do GitHub.