テンプレートの検証 - AWS CloudFormation

テンプレートの検証

テンプレートファイルの構文エラーをチェックするには、aws cloudformation validate-template コマンドを使用できます。

注記

aws cloudformation validate-template コマンドは、テンプレートの構文のみをチェックするように設計されています。リソースに対して指定したプロパティ値が、そのリソースに対して有効であるかどうかは保証されません。また、スタックの作成時に存在するリソースの数も決定しません。

動作の妥当性を確認するには、スタックの作成を試みる必要があります。AWS CloudFormation スタックにはサンドボックスやテスト領域がないため、テスト中に作成したリソースに対して課金されます。

検証中に、AWS CloudFormation はテンプレートが有効な JSON であるかどうかをまず確認します。そうでない場合は、CloudFormation はテンプレートが有効な YAML であるかどうかを確認します。両方のチェックが失敗すると、CloudFormation はテンプレートの検証エラーを返します。--template-body パラメーターを使用してローカルで、または --template-url パラメーターでリモートでテンプレートを検証できます。

有効なテンプレート

以下の例は、リモートの場所でテンプレートを検証するために、--template-url パラメータを渡します。

aws cloudformation validate-template --template-url https://s3.amazonaws.com/cloudformation-templates-us-east-1/S3_Bucket.template

以下は、前のコマンドの出力です。

{
    "Description": "AWS CloudFormation Sample Template S3_Bucket: Sample template showing how to create a publicly accessible S3 bucket. **WARNING** This template creates an S3 bucket.
You will be billed for the AWS resources used if you create a stack from this template.",
    "Parameters": [],
    "Capabilities": []
}

問題がなければ、エラーメッセージが返されず、指定されたすべてのパラメーターについての情報が返されます。

検証エラー

このセクションでは、aws cloudformation validate-template コマンドを実行すると検証エラーが発生します。

次の例は合格では、--template-body パラメータを使用して、テンプレートをローカルで検証します。

aws cloudformation validate-template --template-body file:///home/local/test/sampletemplate.json

以下は、前のコマンドの出力です。

{
    "ResponseMetadata": {
        "RequestId": "4ae33ec0-1988-11e3-818b-e15a6df955cd"
    },
    "Errors": [
        {
            "Message": "Template format error: JSON not well-formed. (line 11, column 8)",
            "Code": "ValidationError",
            "Type": "Sender"
        }
    ],
    "Capabilities": [],
    "Parameters": []
}
A client error (ValidationError) occurred: Template format error: JSON not well-formed. (line 11, column 8)

予想される結果は、エラーに関する情報がリストされたエラーメッセージです。