Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Schema-Syntaxreferenz für AWS CloudFormation Hooks
In diesem Abschnitt wird die Syntax des Schemas beschrieben, das Sie zur Entwicklung von AWS CloudFormation Hooks verwenden.
Ein Hook beinhaltet eine Hook-Spezifikation, die durch ein JSON-Schema und Hook-Handler dargestellt wird. Der erste Schritt bei der Erstellung eines benutzerdefinierten Hooks besteht darin, ein Schema zu modellieren, das den Hook, seine Eigenschaften und seine Attribute definiert. Wenn Sie ein benutzerdefiniertes Hook-Projekt mit dem CloudFormation initCLI-Befehl initialisieren, wird eine Hook-Schemadatei für Sie erstellt. Verwenden Sie diese Schemadatei als Ausgangspunkt für die Definition der Form und Semantik Ihres benutzerdefinierten Hooks.
Schemasyntax
Das folgende Schema ist die Struktur für einen 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-
Der eindeutige Name für Ihren Hook. Gibt einen dreiteiligen Namespace für Ihren Hook an, mit dem empfohlenen Muster von.
Organization::Service::HookAnmerkung
Die folgenden Organisations-Namespaces sind reserviert und können nicht in Ihren Hook-Typnamen verwendet werden:
-
Alexa -
AMZN -
Amazon -
ASK -
AWS -
Custom -
Dev
Erforderlich: Ja
Muster:
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$Minimum:
10Maximum:
196 -
description-
Eine kurze Beschreibung des Hooks, der in der Konsole angezeigt wird. CloudFormation
Erforderlich: Ja
sourceUrl-
Die URL des Quellcodes für den Hook, falls öffentlich.
Required: No
Maximum:
4096 documentationUrl-
Die URL einer Seite mit detaillierter Dokumentation für den Hook.
Erforderlich: Ja
Muster:
^https\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(\:[0-9]*)*([\?/#].*)?$Maximum:
4096Anmerkung
Obwohl das Hook-Schema vollständige und genaue Eigenschaftsbeschreibungen enthalten sollte, können Sie die
documentationURLEigenschaft verwenden, um Benutzern weitere Details, einschließlich Beispiele, Anwendungsfälle und andere detaillierte Informationen, zur Verfügung zu stellen. definitions-
Verwenden Sie den
definitionsBlock, um gemeinsam genutzte Hook-Eigenschaftsschemas bereitzustellen.Es wird als bewährte Methode angesehen, diesen
definitionsAbschnitt zur Definition von Schemaelementen zu verwenden, die an mehreren Stellen in Ihrem Hook-Schema verwendet werden können. Sie können dann einen JSON-Zeiger verwenden, um an den entsprechenden Stellen in Ihrem Hook-Typschema auf dieses Element zu verweisen.Required: No
typeConfiguration-
Die Definition der Konfigurationsdaten eines Hooks.
Erforderlich: Ja
properties-
Die Eigenschaften des Hooks. Alle Eigenschaften eines Hooks müssen im Schema ausgedrückt werden. Ordnen Sie die Eigenschaften des Hook-Schemas den Konfigurationseigenschaften des Hook-Typs zu.
Anmerkung
Verschachtelte Eigenschaften sind nicht zulässig. Definieren Sie stattdessen alle verschachtelten Eigenschaften im
definitionsElement und verwenden Sie einen$refZeiger, um sie in der gewünschten Eigenschaft zu referenzieren.Die folgenden Eigenschaften werden derzeit unterstützt:
-
default— Der Standardwert der Eigenschaft. -
description— Eine Beschreibung der Immobilie. -
pattern— Ein Regex-Muster, das zur Validierung der Eingabe verwendet wird. -
type— Der akzeptierte Typ der Eigenschaft.
-
additionalProperties-
muss
additionalPropertiesauffalsefestgelegt sein. Alle Eigenschaften eines Hooks müssen im Schema ausgedrückt werden: Beliebige Eingaben sind nicht erlaubt.Erforderlich: Ja
Gültige Werte:
false handlers-
Handler spezifizieren die Operationen, die den im Schema definierten Hook initiieren können, wie z. B. Hook-Aufrufpunkte. Beispielsweise wird ein
preUpdateHandler vor den Aktualisierungsvorgängen für alle angegebenen Ziele im Handler aufgerufen.Zulässige Werte:
preCreate|preUpdate|preDeleteAnmerkung
Für den Handler muss mindestens ein Wert angegeben werden.
Wichtig
Stack-Operationen, die zum Status von führen, rufen
UpdateCleanupkeinen Hook auf. In den folgenden beiden Szenarien wird beispielsweise derpreDeleteHandler des Hooks nicht aufgerufen:-
Der Stack wird aktualisiert, nachdem eine Ressource aus der Vorlage entfernt wurde.
-
eine Ressource mit dem Aktualisierungstyp „Ersatz“ wird gelöscht.
-
targetNames-
Ein String-Array mit Typnamen, auf die Hook abzielt. Wenn ein
preCreateHandler beispielsweise einAWS::S3::BucketZiel hat, wird der Hook während der Vorbereitstellungsphase für Amazon S3 S3-Buckets ausgeführt.-
TargetNameGeben Sie mindestens einen Zielnamen für jeden implementierten Handler an.
Muster:
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$Minimum:
1Erforderlich: Ja
Warnung
Dynamische Referenzen von SSM SecureString und Secrets Manager werden nicht aufgelöst, bevor sie an Hooks übergeben werden.
-
permissions-
Ein Zeichenkettenarray, das die AWS Berechtigungen angibt, die zum Aufrufen des Handlers erforderlich sind.
Erforderlich: Ja
additionalProperties-
muss
additionalPropertiesauffalsefestgelegt sein. Alle Eigenschaften eines Hooks müssen im Schema ausgedrückt werden: Beliebige Eingaben sind nicht erlaubt.Erforderlich: Ja
Gültige Werte:
false
Beispiele für Hooks-Schemas
Beispiel 1
Die exemplarischen Vorgehensweisen für Java und Python verwenden das folgende Codebeispiel. Im Folgenden finden Sie eine Beispielstruktur für einen Hook namens. 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 }
Beispiel 2
Das folgende Beispiel ist ein Schema, das STACK und CHANGE_SET for verwendet, targetNames um auf eine Stack-Vorlage und einen Change-Set-Vorgang abzuzielen.
{ "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 }