

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 启动自定义 CloudFormation Hooks 项目
<a name="hooks-init"></a>

创建自定义 Hooks 项目的第一步是启动该项目。你可以使用 CloudFormation CLI `init` 命令来启动你的自定义 Hooks 项目。

该`init`命令将启动一个向导，引导您完成项目的设置，包括 Hooks 架构文件。使用此架构文件作为起点来定义 Hook 的形状和语义。有关更多信息，请参阅 [架构语法](hooks-schema.md)。

**要启动 Hook 项目，请执行以下操作：**

1. 为项目创建目录。

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

1. 导航到新目录。

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

1. 使用 C CloudFormation LI `init` 命令启动项目。

   ```
   cfn init
   ```

   该命令将返回以下输出。

   ```
   Initializing new project
   ```

1. 该`init`命令将启动一个向导，引导您完成项目的设置。出现提示时，输入`h`以指定 Hooks 项目。

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

   ```
   h
   ```

1. 为您的挂钩类型输入一个名称。

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

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

1. 如果只安装了一个语言插件，则默认选择该插件。如果安装了多个语言插件，则可以选择所需的语言。输入您选择的语言的数字选择。

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

1. 根据所选的开发语言设置打包。

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

   （*可选*）选择 Docker 进行独立于平台的打包。虽然不需要 Docker，但强烈建议让打包变得更简单。

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

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

   设置 Java 软件包名称并选择代码生成模型。您可以使用默认的软件包名称，也可以创建一个新的软件包名称。

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

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

------

*结果*：您已成功启动项目并生成了开发 Hook 所需的文件。以下是构成 Python 3.8 的 Hooks 项目的目录和文件的示例。

```
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
```

**注意**  
`src`目录中的文件是根据您的语言选择创建的。生成的文件中有一些有用的注释和示例。当你运行`generate`命令为处理程序添加运行时代码时`models.py`，某些文件（例如）会在稍后的步骤中自动更新。