

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Iniciando um projeto personalizado do CloudFormation Hooks
<a name="hooks-init"></a>

A primeira etapa na criação de seu projeto Hooks personalizado é iniciar o projeto. Você pode usar o `init` comando CloudFormation CLI para iniciar seu projeto Hooks personalizado.

O `init` comando inicia um assistente que orienta você na configuração do projeto, incluindo um arquivo de esquema Hooks. Use esse arquivo de esquema como ponto de partida para definir a forma e a semântica de seus Hooks. Para obter mais informações, consulte [Sintaxe do esquema](hooks-schema.md).

**Para iniciar um projeto Hook:**

1. Crie um diretório para o projeto.

   ```
   mkdir ~/mycompany-testing-mytesthook
   ```

1. Navegue até o novo diretório.

   ```
   cd ~/mycompany-testing-mytesthook
   ```

1. Use o `init` comando CloudFormation CLI para iniciar o projeto.

   ```
   cfn init
   ```

   O comando retorna a seguinte saída.

   ```
   Initializing new project
   ```

1. O `init` comando inicia um assistente que orienta você na configuração do projeto. Quando solicitado, insira `h` para especificar um projeto Hooks.

   ```
   Do you want to develop a new resource(r) a module(m) or a hook(h)?
   ```

   ```
   h
   ```

1. Insira um nome para o seu tipo de gancho.

   ```
   What's the name of your hook type?
   (Organization::Service::Hook)
   ```

   ```
   MyCompany::Testing::MyTestHook
   ```

1. Se apenas um plug-in de idioma estiver instalado, ele será selecionado por padrão. Se mais de um plug-in de idioma estiver instalado, você poderá escolher o idioma desejado. Insira uma seleção de número para o idioma de sua escolha.

   ```
   Select a language for code generation:
   [1] java
   [2] python38
   [3] python39
   (enter an integer):
   ```

1. Configure a embalagem com base na linguagem de desenvolvimento escolhida.

------
#### [ Python ]

   (*Opcional*) Escolha Docker para empacotamento independente da plataforma. Embora o Docker não seja obrigatório, é altamente recomendável facilitar o empacotamento.

   ```
   Use docker for platform-independent packaging (Y/n)?
   This is highly recommended unless you are experienced with cross-platform Python packaging.
   ```

------
#### [ Java ]

   Defina o nome do pacote Java e escolha um modelo codegen. Você pode usar o nome do pacote padrão ou criar um novo.

   ```
   Enter a package name (empty for default 'com.mycompany.testing.mytesthook'):
   ```

   ```
   Choose codegen model - 1 (default) or 2 (guided-aws):
   ```

------

*Resultados*: Você iniciou o projeto com sucesso e gerou os arquivos necessários para desenvolver um Hook. Veja a seguir um exemplo dos diretórios e arquivos que compõem um projeto Hooks para Python 3.8.

```
mycompany-testing-mytesthook.json
rpdk.log
README.md
requirements.txt
hook-role.yaml
template.yml
docs
    README.md
src
    __init__.py
    handlers.py
    models.py
    target_models
        aws_s3_bucket.py
```

**nota**  
Os arquivos no `src` diretório são criados com base na sua seleção de idioma. Há alguns comentários e exemplos úteis nos arquivos gerados. Alguns arquivos, como`models.py`, são atualizados automaticamente em uma etapa posterior quando você executa o `generate` comando para adicionar código de tempo de execução para seus manipuladores.