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á.
Esta seção descreve a sintaxe do esquema que você usa para desenvolver AWS CloudFormation Hooks.
Um Hook inclui uma especificação Hook representada por um JSON esquema e manipuladores Hook. A primeira etapa na criação de um Hook personalizado é modelar um esquema que define o Hook, suas propriedades e seus atributos. Quando você inicializa um projeto Hook personalizado usando o CloudFormation CLI initcomando, um arquivo de esquema Hook é criado para você. Use esse arquivo de esquema como ponto de partida para definir a forma e a semântica do seu Hook personalizado.
Sintaxe do esquema
O esquema a seguir é a estrutura de um Hook.
{
"typeName": "string",
"description": "string",
"sourceUrl": "string",
"documentationUrl": "string",
"definitions": {
"definitionName": {
. . .
}
},
"typeConfiguration": {
"properties": {
"propertyName": {
"description": "string",
"type": "string",
. . .
},
},
"required": [
"propertyName"
. . .
],
"additionalProperties": false
},
"handlers": {
"preCreate": {
"targetNames": [
],
"permissions": [
]
},
"preUpdate": {
"targetNames": [
],
"permissions": [
]
},
"preDelete": {
"targetNames": [
],
"permissions": [
]
}
},
"additionalProperties": false
}
typeName
-
O nome exclusivo do seu Hook. Especifica um namespace de três partes para seu Hook, com um padrão recomendado de.
Organization::Service::Hook
nota
Os seguintes namespaces da organização são reservados e não podem ser usados nos nomes do tipo Hook:
-
Alexa
-
AMZN
-
Amazon
-
ASK
-
AWS
-
Custom
-
Dev
Obrigatório: Sim
Pattern:
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
Mínimo:
10
Maximum:
196
-
description
-
Uma breve descrição do Hook exibido no CloudFormation console.
Obrigatório: Sim
sourceUrl
-
O URL do código-fonte do Hook, se público.
Obrigatório: não
Maximum:
4096
documentationUrl
-
A URL de uma página que fornece documentação detalhada para o Hook.
Obrigatório: Sim
Pattern:
^https\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(\:[0-9]*)*([\?/#].*)?$
Maximum:
4096
nota
Embora o esquema Hook deva incluir descrições de propriedades completas e precisas, você pode usar a
documentationURL
propriedade para fornecer aos usuários mais detalhes, incluindo exemplos, casos de uso e outras informações detalhadas. definitions
-
Use o
definitions
bloco para fornecer esquemas de propriedades Hook compartilhados.É considerado uma prática recomendada usar a
definitions
seção para definir elementos do esquema que podem ser usados em vários pontos do esquema do tipo Hook. Em seguida, você pode usar um JSON ponteiro para referenciar esse elemento nos locais apropriados em seu esquema do tipo Hook.Obrigatório: não
typeConfiguration
-
A definição dos dados de configuração de um Hook.
Obrigatório: Sim
properties
-
As propriedades do gancho. Todas as propriedades de um Hook devem ser expressas no esquema. Alinhe as propriedades do esquema Hook com as propriedades de configuração do tipo Hook.
nota
Propriedades aninhadas não são permitidas. Em vez disso, defina todas as propriedades aninhadas no
definitions
elemento e use um$ref
ponteiro para referenciá-las na propriedade desejada. additionalProperties
-
additionalProperties
deve ser definido comofalse
. Todas as propriedades de um Hook devem ser expressas no esquema: entradas arbitrárias não são permitidas.Obrigatório: Sim
Valores válidos:
false
handlers
-
Os manipuladores especificam as operações que podem iniciar o Hook definido no esquema, como os pontos de invocação do Hook. Por exemplo, um
preUpdate
manipulador é chamado antes das operações de atualização para todos os destinos especificados no manipulador.Valores válidos:
preCreate
|preUpdate
|preDelete
nota
Pelo menos um valor deve ser especificado para o manipulador.
Importante
Operações de empilhamento que resultam no status de
UpdateCleanup
não invocam um Hook. Por exemplo, durante os dois cenários a seguir, opreDelete
manipulador do Hook não é invocado:-
a pilha é atualizada após a remoção de um recurso do modelo.
-
um recurso com o tipo de atualização de substituição é excluído.
-
targetNames
-
Uma matriz de seqüências de nomes de tipos que Hook tem como alvo. Por exemplo, se um
preCreate
manipulador tem umAWS::S3::Bucket
destino, o Hook é executado para buckets do Amazon S3 durante a fase de pré-provisionamento.-
TargetName
Especifique pelo menos um nome de destino para cada manipulador implementado.
Pattern:
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
Mínimo:
1
Obrigatório: Sim
Atenção
SSM SecureString e as referências dinâmicas do Secrets Manager não são resolvidas antes de serem passadas para Hooks.
-
permissions
-
Uma matriz de strings que especifica as AWS permissões necessárias para invocar o manipulador.
Obrigatório: Sim
additionalProperties
-
additionalProperties
deve ser definido comofalse
. Todas as propriedades de um Hook devem ser expressas no esquema: entradas arbitrárias não são permitidas.Obrigatório: Sim
Valores válidos:
false
Exemplos de esquemas de Hooks
Exemplo 1
As apresentações passo a passo de Java e Python usam o exemplo de código a seguir. A seguir está um exemplo de estrutura para um Hook chamadomycompany-testing-mytesthook.json
.
{
"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
}
Exemplo 2
O exemplo a seguir é um esquema que usa o STACK
e CAHNGE_SET
for para targetNames
direcionar um modelo de pilha e uma operação de conjunto de alterações.
{
"typeName":"MyCompany::Testing::MyTestHook",
"description":"Verifies Stack and Change Set 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":[
"STACK",
"CHANGE_SET"
],
"permissions":[
]
},
"preUpdate":{
"targetNames":[
"STACK"
],
"permissions":[
]
},
"preDelete":{
"targetNames":[
"STACK"
],
"permissions":[
]
}
},
"additionalProperties":false
}