翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AWS CloudFormation フックのスキーマ構文リファレンス
このセクションでは、 AWS CloudFormation フックの開発に使用するスキーマの構文について説明します。
フックには、JSON スキーマとフックハンドラーで表されるフック仕様が含まれています。カスタムフックを作成する最初のステップは、フック、そのプロパティ、および属性を定義するスキーマをモデル化することです。CloudFormation CLI init コマンドを使用してカスタムフックプロジェクトを初期化すると、フックスキーマファイルが作成されます。このスキーマファイルを、カスタムフックのシェイプとセマンティクスを定義するための開始点として使用します。
スキーマ構文
次のスキーマはフックの構造です。
{ "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-
フックの一意の名前。フックの 3 つの部分からなる名前空間を指定し、推奨パターンは です
Organization::Service::Hook。注記
次の組織名前空間は予約されており、フックタイプ名では使用できません。
-
Alexa -
AMZN -
Amazon -
ASK -
AWS -
Custom -
Dev
必須: はい
パターン:
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$最小:
10最大:
196 -
description-
CloudFormation コンソールに表示されるフックの簡単な説明。
必須: はい
sourceUrl-
パブリックの場合、フックのソースコードの URL。
必須: いいえ
最大:
4096 documentationUrl-
フックの詳細なドキュメントを提供するページの URL。
必須: はい
パターン:
^https\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])(\:[0-9]*)*([\?/#].*)?$最大:
4096注記
フックスキーマには完全で正確なプロパティの説明を含める必要がありますが、
documentationURLプロパティを使用して、例、ユースケース、その他の詳細情報などの詳細をユーザーに提供できます。 definitions-
definitionsブロックを使用して、共有フックプロパティスキーマを提供します。definitionsセクションを使用して、フックタイプスキーマの複数のポイントで使用できるスキーマ要素を定義することがベストプラクティスと見なされます。その後、JSON ポインタを使用して、フックタイプスキーマの適切な場所でその要素を参照できます。必須: いいえ
typeConfiguration-
フックの設定データの定義。
必須: はい
properties-
フックのプロパティ。フックのすべてのプロパティは、スキーマで表現する必要があります。フックスキーマプロパティをフックタイプの設定プロパティに合わせます。
注記
ネストされたプロパティは許可されません。代わりに、
definitions要素でネストされたプロパティを定義し、$refポインタを使用して目的のプロパティでそれらを参照します。現在、次のプロパティがサポートされています。
-
default– プロパティのデフォルト値。 -
description– プロパティの説明。 -
pattern– 入力の検証に使用される正規表現パターン。 -
type– プロパティの受け入れられたタイプ。
-
additionalProperties-
additionalPropertiesをfalseに設定する必要があります。フックのすべてのプロパティはスキーマで表現する必要があります。任意の入力は許可されません。必須: はい
有効な値:
false handlers-
ハンドラーは、フック呼び出しポイントなど、スキーマで定義されたフックを開始できるオペレーションを指定します。たとえば、
preUpdateハンドラー内のすべての指定されたターゲットの更新オペレーションの前にハンドラーが呼び出されます。有効な値:
preCreate|preUpdate|preDelete注記
ハンドラーには少なくとも 1 つの値を指定する必要があります。
重要
ステータスが になるスタックオペレーションでは、フックは呼び出
UpdateCleanupされません。たとえば、次の 2 つのシナリオでは、フックのpreDeleteハンドラーは呼び出されません。-
スタックは、テンプレートから 1 つのリソースを削除した後に更新されます。
-
更新タイプの置換のリソースが削除されます。
-
targetNames-
Hook がターゲットとする型名の文字列配列。たとえば、
preCreateハンドラーにAWS::S3::Bucketターゲットがある場合、フックは事前プロビジョニングフェーズ中に Amazon S3 バケットに対して実行されます。-
TargetName実装されたハンドラーごとに少なくとも 1 つのターゲット名を指定します。
パターン:
^[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}::[a-zA-Z0-9]{2,64}$最小:
1必須: はい
警告
SSM SecureString と Secrets Manager の動的参照は、フックに渡される前に解決されません。
-
permissions-
ハンドラーを呼び出すために必要な AWS アクセス許可を指定する文字列配列。
必須: はい
additionalProperties-
additionalPropertiesをfalseに設定する必要があります。フックのすべてのプロパティはスキーマで表現する必要があります。任意の入力は許可されません。必須: はい
有効な値:
false
フックスキーマの例
例 1
Java と Python のチュートリアルでは、次のコード例を使用します。以下は、 というフックの構造例です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 }
例 2
次の例は、 STACKと CHANGE_SET の を使用してスタックテンプレートと変更セットオペレーションtargetNamesをターゲットにするスキーマです。
{ "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 }