Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Référence syntaxique du schéma pour les AWS CloudFormation Hooks
Cette section décrit la syntaxe du schéma que vous utilisez pour développer des AWS CloudFormation Hooks.
Un Hook inclut une spécification Hook représentée par un JSON schéma et des gestionnaires Hook. La première étape de la création d'un Hook personnalisé consiste à modéliser un schéma qui définit le Hook, ses propriétés et ses attributs. Lorsque vous initialisez un projet Hook personnalisé à l'aide du CloudFormation CLI initcommande, un fichier de schéma Hook est créé pour vous. Utilisez ce fichier de schéma comme point de départ pour définir la forme et la sémantique de votre Hook personnalisé.
Syntaxe du schéma
Le schéma suivant représente la structure d'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
-
Le nom unique de votre Hook. Spécifie un espace de noms en trois parties pour votre Hook, avec un modèle recommandé de.
Organization::Service::Hook
Note
Les espaces de noms d'organisation suivants sont réservés et ne peuvent pas être utilisés dans les noms de vos types de Hook :
-
Alexa
-
AMZN
-
Amazon
-
ASK
-
AWS
-
Custom
-
Dev
Obligatoire : oui
Modèle :
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
Minimum :
10
Maximum :
196
-
description
-
Brève description du Hook affiché dans la CloudFormation console.
Obligatoire : oui
sourceUrl
-
Le code source URL du Hook, s'il est public.
Obligatoire : non
Maximum :
4096
documentationUrl
-
Le URL d'une page fournissant une documentation détaillée pour le Hook.
Obligatoire : oui
Modèle :
^https\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(\:[0-9]*)*([\?/#].*)?$
Maximum :
4096
Note
Bien que le schéma Hook doive inclure des descriptions de propriétés complètes et précises, vous pouvez utiliser la
documentationURL
propriété pour fournir aux utilisateurs plus de détails, notamment des exemples, des cas d'utilisation et d'autres informations détaillées. definitions
-
Utilisez le
definitions
bloc pour fournir des schémas de propriétés Hook partagés.Il est considéré comme une bonne pratique d'utiliser cette
definitions
section pour définir des éléments de schéma qui peuvent être utilisés à plusieurs points de votre schéma de type Hook. Vous pouvez ensuite utiliser un JSON pointeur pour référencer cet élément aux endroits appropriés de votre schéma de type Hook.Obligatoire : non
typeConfiguration
-
Définition des données de configuration d'un Hook.
Obligatoire : oui
properties
-
Les propriétés du Hook. Toutes les propriétés d'un Hook doivent être exprimées dans le schéma. Alignez les propriétés du schéma Hook avec les propriétés de configuration du type Hook.
Note
Les propriétés imbriquées ne sont pas autorisées. Définissez plutôt les propriétés imbriquées de l'
definitions
élément et utilisez un$ref
pointeur pour les référencer dans la propriété souhaitée. additionalProperties
-
additionalProperties
doit être défini surfalse
. Toutes les propriétés d'un Hook doivent être exprimées dans le schéma : les entrées arbitraires ne sont pas autorisées.Obligatoire : oui
Valeurs valides :
false
handlers
-
Les gestionnaires spécifient les opérations qui peuvent initier le Hook défini dans le schéma, telles que les points d'invocation du Hook. Par exemple, un
preUpdate
gestionnaire est invoqué avant les opérations de mise à jour pour toutes les cibles spécifiées dans le gestionnaire.Valeurs valides :
preCreate
|preUpdate
|preDelete
Note
Au moins une valeur doit être spécifiée pour le gestionnaire.
Important
Les opérations de pile qui se traduisent par le statut de
UpdateCleanup
n'invoquent pas de Hook. Par exemple, dans les deux scénarios suivants, lepreDelete
gestionnaire du Hook n'est pas invoqué :-
la pile est mise à jour après la suppression d'une ressource du modèle.
-
une ressource dont le type de mise à jour est remplacé est supprimée.
-
targetNames
-
Un tableau de chaînes de noms de types que Hook cible. Par exemple, si un
preCreate
gestionnaire a uneAWS::S3::Bucket
cible, le Hook s'exécute pour les compartiments Amazon S3 pendant la phase de préapprovisionnement.-
TargetName
Spécifiez au moins un nom de cible pour chaque gestionnaire implémenté.
Modèle :
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$
Minimum :
1
Obligatoire : oui
Avertissement
SSM SecureString et les références dynamiques de Secrets Manager ne sont pas résolues avant d'être transmises à Hooks.
-
permissions
-
Un tableau de chaînes qui spécifie les AWS autorisations nécessaires pour appeler le gestionnaire.
Obligatoire : oui
additionalProperties
-
additionalProperties
doit être défini surfalse
. Toutes les propriétés d'un Hook doivent être exprimées dans le schéma : les entrées arbitraires ne sont pas autorisées.Obligatoire : oui
Valeurs valides :
false
Exemples de schémas Hooks
Exemple 1
Les procédures pas à pas pour Java et Python utilisent l'exemple de code suivant. Voici un exemple de structure pour un Hook appelé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" } }, "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 }
Exemple 2
L'exemple suivant est un schéma qui utilise le STACK
et CAHNGE_SET
pour targetNames
pour cibler un modèle de pile et une opération d'ensemble de modifications.
{ "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 }