

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Iniciar un proyecto CloudFormation Hooks personalizado
<a name="hooks-init"></a>

El primer paso para crear tu proyecto Hooks personalizado es iniciar el proyecto. Puede usar el `init` comando CloudFormation CLI para iniciar su proyecto Hooks personalizado.

El `init` comando lanza un asistente que le guía a través de la configuración del proyecto, incluido un archivo de esquema de Hooks. Usa este archivo de esquema como punto de partida para definir la forma y la semántica de tus Hooks. Para obtener más información, consulte [Sintaxis del esquema](hooks-schema.md).

**Para iniciar un proyecto de Hook:**

1. Crea un directorio para el proyecto.

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

1. Vaya al nuevo directorio.

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

1. Utilice el `init` comando CloudFormation CLI para iniciar el proyecto.

   ```
   cfn init
   ```

   El comando devuelve el resultado siguiente.

   ```
   Initializing new project
   ```

1. El `init` comando lanza un asistente que le guía a través de la configuración del proyecto. Cuando se le solicite, introduzca `h` para especificar un proyecto de Hooks.

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

   ```
   h
   ```

1. Introduzca un nombre para el tipo de Hook.

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

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

1. Si solo hay un complemento de idioma instalado, se selecciona de forma predeterminada. Si hay más de un complemento de idioma instalado, puede elegir el idioma que desee. Introduce una selección numérica para el idioma de tu elección.

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

1. Configure el empaquetado en función del idioma de desarrollo elegido.

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

   (*Opcional*) Elija Docker para el empaquetado independiente de la plataforma. Si bien Docker no es obligatorio, es muy recomendable para facilitar el empaquetado.

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

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

   Establezca el nombre del paquete de Java y elija un modelo de generación de código. Puede usar el nombre de paquete predeterminado o crear uno nuevo.

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

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

------

*Resultados*: Has iniciado correctamente el proyecto y has generado los archivos necesarios para desarrollar un Hook. El siguiente es un ejemplo de los directorios y archivos que componen un proyecto de 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**  
Los archivos del `src` directorio se crean en función de la selección de idioma. Hay algunos comentarios y ejemplos útiles en los archivos generados. Algunos archivos, por ejemplo`models.py`, se actualizan automáticamente en un paso posterior al ejecutar el `generate` comando para añadir código de tiempo de ejecución a los controladores.