AWSTemplateFormatVersion: "2010-09-09" Description: A sample template Errors: Catch: Missing Parameters: myParam: Type: String Default: String Description: String Resources: ## Missing Properties MyEC2Instance1: Type: "AWS::EC2::Instance1" ## Fake Properties Key on main level ## Bad sub properties in BlockDeviceMappings/Ebs and NetworkInterfaces MyEC2Instance: Type: "AWS::EC2::Instance" Properties: ImageId: "ami-2f726546" InstanceType: t1.micro KeyName: 1 FakeKey: MadeYouLook BlockDeviceMappings: - DeviceName: /dev/sdm Ebs: VolumeType: io1 Iops: !Ref pIops DeleteOnTermination: false VolumeSize: 20 BadSubX2Key: Not valid NetworkInterfaces: - DeviceIndex: "1" BadKey: true ## Bad Policies property in PolicyDocument RootRole: Type: "AWS::IAM::Role" Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Principal: Service: - "ec2.amazonaws.com" Action: - "sts:AssumeRole" Path: "/" Policies: - PolicyName: "root" PolicyDocument1: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" RolePolicies: Type: "AWS::IAM::Policy" Properties: PolicyName: "root" PolicyDocument: Version: "2012-10-17" Statement: - Effect: "Allow" Action: "*" Resource: "*" Roles: - Ref: "RootRole" RootInstanceProfile: Type: "AWS::IAM::InstanceProfile" Properties: Path: "/" Roles: - Ref: "RootRole" # Bad Key under HealthCheck ElasticLoadBalancer: Type: AWS::ElasticLoadBalancing::LoadBalancer Properties: AvailabilityZones: Fn::GetAZs: '' Instances: - Ref: MyEC2Instance Listeners: - LoadBalancerPort: '80' InstancePort: Ref: WebServerPort Protocol: HTTP HealthCheck: FakeKey: Another fake key Target: Fn::Join: - '' - - 'HTTP:' - Ref: WebServerPort - "/" HealthyThreshold: '3' # Int which should be string. (No Error) UnhealthyThreshold: 5 # Should be boolean (Error) Interval: True Timeout: '5' Outputs: myOutput: Value: !GetAtt ElasticLoadBalancer.CanonicalHostedZoneName myErrorOutput: Value: !GetAtt ElasticLoadBalancer.DNE