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.
Referencia de sintaxis del esquema para AWS CloudFormation Hooks
En esta sección se describe la sintaxis del esquema que utilizas para desarrollar AWS CloudFormation Hooks.
Un Hook incluye una especificación de Hook representada por un esquema JSON y controladores de Hook. El primer paso para crear un Hook personalizado es modelar un esquema que defina el Hook, sus propiedades y sus atributos. Al inicializar un proyecto Hook personalizado mediante el initcomando CloudFormation CLI, se crea un archivo de esquema Hook para usted. Usa este archivo de esquema como punto de partida para definir la forma y la semántica de tu Hook personalizado.
Sintaxis del esquema
El siguiente esquema es la estructura de un 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
- 
     El nombre exclusivo de tu Hook. Especifica un espacio de nombres de tres partes para tu Hook, con un patrón recomendado de. Organization::Service::HooknotaLos siguientes espacios de nombres de organización están reservados y no se pueden usar en los nombres de tipo Hook: - 
        Alexa
- 
        AMZN
- 
        Amazon
- 
        ASK
- 
        AWS
- 
        Custom
- 
        Dev
 Obligatorio: sí Patrón: ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$Mínimo: 10Máximo: 196
- 
        
- description
- 
     Una breve descripción del Hook que se muestra en la CloudFormation consola. Obligatorio: sí 
- sourceUrl
- 
     La URL del código fuente del Hook, si es pública. Obligatorio: no Máximo: 4096
- documentationUrl
- 
     La URL de una página que proporciona documentación detallada del Hook. Obligatorio: sí Patrón: ^https\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(\:[0-9]*)*([\?/#].*)?$Máximo: 4096notaSi bien el esquema de Hook debe incluir descripciones de propiedades completas y precisas, puedes usar la documentationURLpropiedad para proporcionar a los usuarios más detalles, incluidos ejemplos, casos de uso y otra información detallada.
- definitions
- 
     Usa el definitionsbloque para proporcionar esquemas de propiedades de Hook compartidos.Se considera una buena práctica utilizar la definitionssección para definir elementos de esquema que se puedan utilizar en varios puntos del esquema de tipo Hook. A continuación, puedes usar un puntero JSON para hacer referencia a ese elemento en los lugares correspondientes de tu esquema de tipo Hook.Obligatorio: no 
- typeConfiguration
- 
     La definición de los datos de configuración de un Hook. Obligatorio: sí 
- properties
- 
     Las propiedades del Hook. Todas las propiedades de un Hook deben expresarse en el esquema. Alinee las propiedades del esquema Hook con las propiedades de configuración del tipo Hook. notaNo se permiten propiedades anidadas. En su lugar, defina las propiedades anidadas en el definitionselemento y utilice un$refpuntero para hacer referencia a ellas en la propiedad deseada.Actualmente se admiten las siguientes propiedades: - 
       default— El valor por defecto de la propiedad.
- 
       description— Una descripción de la propiedad.
- 
       pattern— Un patrón de expresiones regulares que se utiliza para validar la entrada.
- 
       type— El tipo de propiedad aceptado.
 
- 
       
- additionalProperties
- 
     additionalPropertiesse debe establecer enfalse. Todas las propiedades de un Hook deben expresarse en el esquema: no se permiten entradas arbitrarias.Obligatorio: sí Valores válidos: false
- handlers
- 
     Los controladores especifican las operaciones que pueden iniciar el Hook definido en el esquema, como los puntos de invocación del Hook. Por ejemplo, se invoca un preUpdatecontrolador antes de las operaciones de actualización para todos los objetivos especificados en el controlador.Valores válidos: preCreate|preUpdate|preDeletenotaDebe especificarse al menos un valor para el controlador. importanteApila las operaciones que dan como resultado el estado de UpdateCleanupno invocan un Hook. Por ejemplo, en los dos escenarios siguientes, no se invoca elpreDeletecontrolador del Hook:- 
        la pila se actualiza después de eliminar un recurso de la plantilla. 
- 
        se elimina un recurso con el tipo de actualización de reemplazo. 
 
- 
        
- targetNames
- 
     Un conjunto de cadenas de nombres de tipos a los que apunta Hook. Por ejemplo, si un preCreatecontrolador tiene unAWS::S3::Bucketobjetivo, el Hook se ejecuta para los buckets de Amazon S3 durante la fase de preaprovisionamiento.- 
       TargetNameEspecifique al menos un nombre de destino para cada controlador implementado. Patrón: ^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$Mínimo: 1Obligatorio: sí avisoLas referencias dinámicas de SSM SecureString y Secrets Manager no se resuelven antes de pasarlas a Hooks. 
 
- 
       
- permissions
- 
     Una matriz de cadenas que especifica los AWS permisos necesarios para invocar el controlador. Obligatorio: sí 
- additionalProperties
- 
     additionalPropertiesse debe establecer enfalse. Todas las propiedades de un Hook deben expresarse en el esquema: no se permiten entradas arbitrarias.Obligatorio: sí Valores válidos: false
Ejemplos de esquemas de Hooks
Ejemplo 1
Los tutoriales de Java y Python utilizan el siguiente ejemplo de código. El siguiente es un ejemplo de estructura para un Hook llamado. mycompany-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", "pattern": "[a-zA-Z]*[1-9]" } }, "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 }
Ejemplo 2
El siguiente ejemplo es un esquema que usa STACK and CHANGE_SET for para apuntar targetNames a una plantilla de pila y a una operación de conjunto de cambios.
{ "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", "pattern": "[a-zA-Z]*[1-9]" } }, "required":[ ], "additionalProperties":false }, "handlers":{ "preCreate":{ "targetNames":[ "STACK", "CHANGE_SET" ], "permissions":[ ] }, "preUpdate":{ "targetNames":[ "STACK" ], "permissions":[ ] }, "preDelete":{ "targetNames":[ "STACK" ], "permissions":[ ] } }, "additionalProperties":false }