

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# カスタム CloudFormation フックのモデリング
<a name="hooks-model"></a>

カスタム CloudFormation フックのモデリングには、フック、そのプロパティ、および属性を定義するスキーマの作成が含まれます。`cfn init` コマンドを使用してカスタムフックプロジェクトを作成すると、サンプルフックスキーマが JSON 形式のテキストファイル として作成されます`{{hook-name}}.json`。

ターゲット呼び出しポイントとターゲットアクションは、フックが呼び出される正確なポイントを指定します。*フックハンドラー*は、これらのポイントの実行可能なカスタムロジックをホストします。たとえば、 `CREATE`オペレーションのターゲットアクションは`preCreate`ハンドラーを使用します。Hook ターゲットとサービスが一致するアクションを実行すると、ハンドラーに書き込まれたコードが を呼び出します。*フックターゲット*は、フックが呼び出される送信先です。 CloudFormation パブリックリソース、プライベートリソース、カスタムリソースなどのターゲットを指定できます。フックは、フックターゲットの数に制限がありません。

スキーマには、フックに必要なアクセス許可が含まれています。フックを作成するには、フックハンドラーごとにアクセス許可を指定する必要があります。CloudFormation では、*最小特権*を付与するか、タスクの実行に必要なアクセス許可のみを付与するという標準的なセキュリティアドバイスに従うポリシーを作成することを作成者にお勧めします。ユーザー (およびロール) が何をする必要があるかを決定し、フックオペレーションのタスク*のみ*を実行できるようにするポリシーを作成します。CloudFormation は、これらのアクセス許可を使用して、フックユーザーが提供したアクセス許可をスコープダウンします。これらのアクセス許可はフックに渡されます。フックハンドラーは、これらのアクセス許可を使用して AWS リソースにアクセスします。

フックを定義する開始点として、次のスキーマファイルを使用できます。フックスキーマを使用して、実装するハンドラーを指定します。特定のハンドラーを実装しない場合は、フックスキーマのハンドラーのセクションから削除します。スキーマの詳細については、「」を参照してください[スキーマ構文](hooks-schema.md)。

```
{
    "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
}
```

**Topics**
+ [Java を使用したカスタム CloudFormation フックのモデリング](hooks-model-java.md)
+ [Python を使用したカスタム CloudFormation フックのモデリング](hooks-model-python.md)