

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á.

# Modelagem de CloudFormation ganchos personalizados
<a name="hooks-model"></a>

A modelagem de CloudFormation Hooks personalizados envolve a criação de um esquema que define o Hook, suas propriedades e seus atributos. Quando você cria seu projeto Hook personalizado usando o `cfn init` comando, um exemplo de esquema Hook é criado como um arquivo de texto formatado em JSON,. `{{hook-name}}.json`

Os pontos de invocação de destino e as ações de destino especificam o ponto exato em que o Hook é invocado. *Os manipuladores de ganchos* hospedam uma lógica personalizada executável para esses pontos. Por exemplo, uma ação alvo da `CREATE` operação usa um `preCreate` manipulador. Seu código escrito no manipulador será invocado quando os destinos e serviços do Hook executarem uma ação correspondente. Os *alvos do gancho* são o destino onde os ganchos são invocados. Você pode especificar alvos, como recursos CloudFormation públicos, recursos privados ou recursos personalizados. Os ganchos suportam um número ilimitado de alvos de ganchos.

O esquema contém as permissões necessárias para o Hook. A criação do Hook exige que você especifique permissões para cada manipulador do Hook. CloudFormation incentiva os autores a escreverem políticas que sigam o conselho de segurança padrão de conceder *privilégios mínimos* ou conceder somente as permissões necessárias para realizar uma tarefa. Determine o que os usuários (e as funções) precisam fazer e, em seguida, crie políticas que permitam que eles realizem *apenas* essas tarefas para as operações do Hook. CloudFormation usa essas permissões para detalhar as permissões fornecidas pelos usuários do Hook. Essas permissões são passadas para o Hook. Os manipuladores de ganchos usam essas permissões para acessar AWS recursos.

Você pode usar o seguinte arquivo de esquema como ponto de partida para definir seu Hook. Use o esquema Hook para especificar quais manipuladores você deseja implementar. Se você optar por não implementar um manipulador específico, remova-o da seção de manipuladores do esquema Hook. Para obter mais detalhes sobre o esquema, consulte[Sintaxe do esquema](hooks-schema.md).

```
{
    "typeName":"MyCompany::Testing::MyTestHook",
    "description":"Verifies S3 bucket and SQS queues properties before create and update",
    "sourceUrl":"https://mycorp.com/my-repo.git",
    "documentationUrl":"https://mycorp.com/documentation",
    "typeConfiguration":{
        "properties":{
            "minBuckets":{
                "description":"Minimum number of compliant buckets",
                "type":"string"
            },
            "minQueues":{
                "description":"Minimum number of compliant queues",
                "type":"string"
            },
            "encryptionAlgorithm":{
                "description":"Encryption algorithm for SSE",
                "default":"AES256",
                "type":"string"
            }
        },
        "required":[
            
        ],
        "additionalProperties":false
    },
    "handlers":{
        "preCreate":{
            "targetNames":[
                "AWS::S3::Bucket",
                "AWS::SQS::Queue"
            ],
            "permissions":[
                
            ]
        },
        "preUpdate":{
            "targetNames":[
                "AWS::S3::Bucket",
                "AWS::SQS::Queue"
            ],
            "permissions":[
                
            ]
        },
        "preDelete":{
            "targetNames":[
                "AWS::S3::Bucket",
                "AWS::SQS::Queue"
            ],
            "permissions":[
                "s3:ListBucket",
                "s3:ListAllMyBuckets",
                "s3:GetEncryptionConfiguration",
                "sqs:ListQueues",
                "sqs:GetQueueAttributes",
                "sqs:GetQueueUrl"
            ]
        }
    },
    "additionalProperties":false
}
```

**Topics**
+ [Modelagem de CloudFormation ganchos personalizados usando Java](hooks-model-java.md)
+ [Modelagem de CloudFormation ganchos personalizados usando Python](hooks-model-python.md)