As a user,
when my deCDK template is not correct,
I want an error messages that tells me what is wrong.
Currently, if a property is incorrect the validation fails to match the resource to an expected definition and returns the unhelpful error as below.
We need to find a way to structure the schema so that it can point a user to missing or wrong properties.
Error: Expected valid template, got:
is not any of <#/definitions/CfnResource>,<#/definitions/aws-cdk-lib.aws_apigateway.ApiKey>,<#/definitions/aws-cdk-lib.aws_apigateway.BasePathMapping>,<#/definitions/aws-cdk-lib.aws_apigateway.CognitoUserPoolsAuthorizer>,<#/definitions/aws-cdk-lib.aws_apigateway.Deployment>,<#/definitions/aws-cdk-lib.aws_apigateway.DomainName>,<#/definitions/aws-cdk-lib.aws_apigateway.GatewayResponse>,<#/definitions/aws-cdk-lib.aws_apigateway.LambdaRestApi>,<#/definitions/aws-cdk-lib.aws_apigateway.Method>,<#/definitions/aws-cdk-lib.aws_apigateway.Model>,<#/definitions/aws-cdk-lib.aws_apigateway.ProxyResource>,<#/definitions/aws-cdk-lib.aws_apigateway.RateLimitedApiKey>,<#/definitions/aws-cdk-lib.aws_apigateway.RequestAuthorizer>,<#/definitions/aws-cdk-lib.aws_apigateway.RequestValidator>,<#/definitions/aws-cdk-lib.aws_apigateway.Resource>,<#/definitions/aws-cdk-lib.aws_apigateway.RestApi>,<#/definitions/aws-cdk-lib.aws_apigateway.SpecRestApi>,<#/definitions/aws-cdk-lib.aws_apigateway.Stage>,<#/definitions/aws-cdk-lib.aws_apigateway.StepFunctionsRestApi>,<#/definitions/aws-cdk-lib.aws_apigateway.TokenAuthorizer>,<#/definitions/aws-cdk-lib.aws_apigateway.UsagePlan>,<#/definitions/aws-cdk-lib.aws_apigateway.VpcLink>,<#/definitions/aws-cdk-lib.aws_applicationautoscaling.ScalableTarget>,<#/definitions/aws-cdk-lib.aws_applicationautoscaling.StepScalingAction>,<#/definitions/aws-cdk-lib.aws_applicationautoscaling.StepScalingPolicy>,<#/definitions/aws-cdk-lib.aws_applicationautoscaling.TargetTrackingScalingPolicy>,<#/definitions/aws-cdk-lib.aws_appmesh.GatewayRoute>,<#/definitions/aws-cdk-lib.aws_appmesh.Mesh>,<#/definitions/aws-cdk-lib.aws_appmesh.Route>,<#/definitions/aws-cdk-lib.aws_appmesh.VirtualGateway>,<#/definitions/aws-cdk-lib.aws_appmesh.VirtualNode>,<#/definitions/aws-cdk-lib.aws_appmesh.VirtualRouter>,<#/definitions/aws-cdk-lib.aws_appmesh.VirtualService>,<#/definitions/aws-cdk-lib.aws_autoscaling.AutoScalingGroup>,<#/definitions/aws-cdk-lib.aws_autoscaling.LifecycleHook>,<#/definitions/aws-cdk-lib.aws_autoscaling.ScheduledAction>,<#/definitions/aws-cdk-lib.aws_autoscaling.StepScalingAction>,<#/definitions/aws-cdk-lib.aws_autoscaling.StepScalingPolicy>,<#/definitions/aws-cdk-lib.aws_autoscaling.TargetTrackingScalingPolicy>,<#/definitions/aws-cdk-lib.aws_autoscaling.WarmPool>,<#/definitions/aws-cdk-lib.aws_backup.BackupPlan>,<#/definitions/aws-cdk-lib.aws_backup.BackupSelection>,<#/definitions/aws-cdk-lib.aws_backup.BackupVault>,<#/definitions/aws-cdk-lib.aws_certificatemanager.Certificate>,<#/definitions/aws-cdk-lib.aws_certificatemanager.DnsValidatedCertificate>,<#/definitions/aws-cdk-lib.aws_certificatemanager.PrivateCertificate>,<#/definitions/aws-cdk-lib.aws_chatbot.SlackChannelConfiguration>,<#/definitions/aws-cdk-lib.aws_cloudfront.experimental.EdgeFunction>,<#/definitions/aws-cdk-lib.aws_cloudfront.CachePolicy>,<#/definitions/aws-cdk-lib.aws_cloudfront.CloudFrontWebDistribution>,<#/definitions/aws-cdk-lib.aws_cloudfront.Distribution>,<#/definitions/aws-cdk-lib.aws_cloudfront.Function>,<#/definitions/aws-cdk-lib.aws_cloudfront.KeyGroup>,<#/definitions/aws-cdk-lib.aws_cloudfront.OriginAccessIdentity>,<#/definitions/aws-cdk-lib.aws_cloudfront.OriginRequestPolicy>,<#/definitions/aws-cdk-lib.aws_cloudfront.PublicKey>,<#/definitions/aws-cdk-lib.aws_cloudfront.ResponseHeadersPolicy>,<#/definitions/aws-cdk-lib.aws_cloudtrail.Trail>,<#/definitions/aws-cdk-lib.aws_cloudwatch.Alarm>,<#/definitions/aws-cdk-lib.aws_cloudwatch.CompositeAlarm>,<#/definitions/aws-cdk-lib.aws_cloudwatch.Dashboard>,<#/definitions/aws-cdk-lib.aws_codebuild.BitBucketSourceCredentials>,<#/definitions/aws-cdk-lib.aws_codebuild.GitHubEnterpriseSourceCredentials>,<#/definitions/aws-cdk-lib.aws_codebuild.GitHubSourceCredentials>,<#/definitions/aws-cdk-lib.aws_codebuild.PipelineProject>,<#/definitions/aws-cdk-lib.aws_codebuild.Project>,<#/definitions/aws-cdk-lib.aws_codebuild.ReportGroup>,<#/definitions/aws-cdk-lib.aws_codebuild.UntrustedCodeBoundaryPolicy>,<#/definitions/aws-cdk-lib.aws_codecommit.Repository>,<#/definitions/aws-cdk-lib.aws_codedeploy.CustomLambdaDeploymentConfig>,<#/definitions/aws-cdk-lib.aws_codedeploy.EcsApplication>,<#/definitions/aws-cdk-lib.aws_codedeploy.LambdaApplication>,<#/definitions/aws-cdk-lib.aws_codedeploy.LambdaDeploymentGroup>,<#/definitions/aws-cdk-lib.aws_codedeploy.ServerApplication>,<#/definitions/aws-cdk-lib.aws_codedeploy.ServerDeploymentConfig>,<#/definitions/aws-cdk-lib.aws_codedeploy.ServerDeploymentGroup>,<#/definitions/aws-cdk-lib.aws_codeguruprofiler.ProfilingGroup>,<#/definitions/aws-cdk-lib.aws_codepipeline.CustomActionRegistration>,<#/definitions/aws-cdk-lib.aws_codepipeline.Pipeline>,<#/definitions/aws-cdk-lib.aws_codepipeline_actions.JenkinsProvider>,<#/definitions/aws-cdk-lib.aws_codestarnotifications.NotificationRule>,<#/definitions/aws-cdk-lib.aws_cognito.UserPool>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolClient>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolDomain>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolIdentityProviderAmazon>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolIdentityProviderApple>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolIdentityProviderFacebook>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolIdentityProviderGoogle>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolIdentityProviderOidc>,<#/definitions/aws-cdk-lib.aws_cognito.UserPoolResourceServer>,<#/definitions/aws-cdk-lib.aws_config.AccessKeysRotated>,<#/definitions/aws-cdk-lib.aws_config.CloudFormationStackDriftDetectionCheck>,<#/definitions/aws-cdk-lib.aws_config.CloudFormationStackNotificationCheck>,<#/definitions/aws-cdk-lib.aws_config.CustomRule>,<#/definitions/aws-cdk-lib.aws_config.ManagedRule>,<#/definitions/aws-cdk-lib.aws_docdb.ClusterParameterGroup>,<#/definitions/aws-cdk-lib.aws_docdb.DatabaseCluster>,<#/definitions/aws-cdk-lib.aws_docdb.DatabaseInstance>,<#/definitions/aws-cdk-lib.aws_docdb.DatabaseSecret>,<#/definitions/aws-cdk-lib.aws_dynamodb.Table>,<#/definitions/aws-cdk-lib.aws_ec2.BastionHostLinux>,<#/definitions/aws-cdk-lib.aws_ec2.ClientVpnAuthorizationRule>,<#/definitions/aws-cdk-lib.aws_ec2.ClientVpnEndpoint>,<#/definitions/aws-cdk-lib.aws_ec2.ClientVpnRoute>,<#/definitions/aws-cdk-lib.aws_ec2.FlowLog>,<#/definitions/aws-cdk-lib.aws_ec2.GatewayVpcEndpoint>,<#/definitions/aws-cdk-lib.aws_ec2.Instance>,<#/definitions/aws-cdk-lib.aws_ec2.InterfaceVpcEndpoint>,<#/definitions/aws-cdk-lib.aws_ec2.LaunchTemplate>,<#/definitions/aws-cdk-lib.aws_ec2.NetworkAcl>,<#/definitions/aws-cdk-lib.aws_ec2.NetworkAclEntry>,<#/definitions/aws-cdk-lib.aws_ec2.PrivateSubnet>,<#/definitions/aws-cdk-lib.aws_ec2.PublicSubnet>,<#/definitions/aws-cdk-lib.aws_ec2.SecurityGroup>,<#/definitions/aws-cdk-lib.aws_ec2.Subnet>,<#/definitions/aws-cdk-lib.aws_ec2.SubnetNetworkAclAssociation>,<#/definitions/aws-cdk-lib.aws_ec2.Volume>,<#/definitions/aws-cdk-lib.aws_ec2.Vpc>,<#/definitions/aws-cdk-lib.aws_ec2.VpcEndpointService>,<#/definitions/aws-cdk-lib.aws_ec2.VpnConnection>,<#/definitions/aws-cdk-lib.aws_ec2.VpnGateway>,<#/definitions/aws-cdk-lib.aws_ecr.Repository>,<#/definitions/aws-cdk-lib.aws_ecr_assets.DockerImageAsset>,<#/definitions/aws-cdk-lib.aws_ecr_assets.TarballImageAsset>,<#/definitions/aws-cdk-lib.aws_ecs.AsgCapacityProvider>,<#/definitions/aws-cdk-lib.aws_ecs.Cluster>,<#/definitions/aws-cdk-lib.aws_ecs.ContainerDefinition>,<#/definitions/aws-cdk-lib.aws_ecs.Ec2Service>,<#/definitions/aws-cdk-lib.aws_ecs.Ec2TaskDefinition>,<#/definitions/aws-cdk-lib.aws_ecs.ExternalService>,<#/definitions/aws-cdk-lib.aws_ecs.ExternalTaskDefinition>,<#/definitions/aws-cdk-lib.aws_ecs.FargateService>,<#/definitions/aws-cdk-lib.aws_ecs.FargateTaskDefinition>,<#/definitions/aws-cdk-lib.aws_ecs.FirelensLogRouter>,<#/definitions/aws-cdk-lib.aws_ecs.LinuxParameters>,<#/definitions/aws-cdk-lib.aws_ecs.ScalableTaskCount>,<#/definitions/aws-cdk-lib.aws_ecs.TaskDefinition>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.ApplicationLoadBalancedEc2Service>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.ApplicationLoadBalancedFargateService>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.ApplicationMultipleTargetGroupsEc2Service>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.ApplicationMultipleTargetGroupsFargateService>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.NetworkLoadBalancedEc2Service>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.NetworkLoadBalancedFargateService>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.NetworkMultipleTargetGroupsEc2Service>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.NetworkMultipleTargetGroupsFargateService>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.QueueProcessingEc2Service>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.QueueProcessingFargateService>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.ScheduledEc2Task>,<#/definitions/aws-cdk-lib.aws_ecs_patterns.ScheduledFargateTask>,<#/definitions/aws-cdk-lib.aws_efs.AccessPoint>,<#/definitions/aws-cdk-lib.aws_efs.FileSystem>,<#/definitions/aws-cdk-lib.aws_eks.AlbController>,<#/definitions/aws-cdk-lib.aws_eks.AwsAuth>,<#/definitions/aws-cdk-lib.aws_eks.Cluster>,<#/definitions/aws-cdk-lib.aws_eks.FargateCluster>,<#/definitions/aws-cdk-lib.aws_eks.FargateProfile>,<#/definitions/aws-cdk-lib.aws_eks.HelmChart>,<#/definitions/aws-cdk-lib.aws_eks.KubectlProvider>,<#/definitions/aws-cdk-lib.aws_eks.KubernetesManifest>,<#/definitions/aws-cdk-lib.aws_eks.KubernetesObjectValue>,<#/definitions/aws-cdk-lib.aws_eks.KubernetesPatch>,<#/definitions/aws-cdk-lib.aws_eks.Nodegroup>,<#/definitions/aws-cdk-lib.aws_eks.OpenIdConnectProvider>,<#/definitions/aws-cdk-lib.aws_eks.ServiceAccount>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancing.LoadBalancer>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListener>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListenerCertificate>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationListenerRule>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationLoadBalancer>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.ApplicationTargetGroup>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.NetworkListener>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.NetworkLoadBalancer>,<#/definitions/aws-cdk-lib.aws_elasticloadbalancingv2.NetworkTargetGroup>,<#/definitions/aws-cdk-lib.aws_elasticsearch.Domain>,<#/definitions/aws-cdk-lib.aws_events.ApiDestination>,<#/definitions/aws-cdk-lib.aws_events.Archive>,<#/definitions/aws-cdk-lib.aws_events.Connection>,<#/definitions/aws-cdk-lib.aws_events.EventBus>,<#/definitions/aws-cdk-lib.aws_events.Rule>,<#/definitions/aws-cdk-lib.aws_fsx.LustreFileSystem>,<#/definitions/aws-cdk-lib.aws_globalaccelerator.Accelerator>,<#/definitions/aws-cdk-lib.aws_globalaccelerator.EndpointGroup>,<#/definitions/aws-cdk-lib.aws_globalaccelerator.Listener>,<#/definitions/aws-cdk-lib.aws_iam.AccessKey>,<#/definitions/aws-cdk-lib.aws_iam.Group>,<#/definitions/aws-cdk-lib.aws_iam.LazyRole>,<#/definitions/aws-cdk-lib.aws_iam.ManagedPolicy>,<#/definitions/aws-cdk-lib.aws_iam.OpenIdConnectProvider>,<#/definitions/aws-cdk-lib.aws_iam.Policy>,<#/definitions/aws-cdk-lib.aws_iam.Role>,<#/definitions/aws-cdk-lib.aws_iam.SamlProvider>,<#/definitions/aws-cdk-lib.aws_iam.User>,<#/definitions/aws-cdk-lib.aws_kinesis.Stream>,<#/definitions/aws-cdk-lib.aws_kms.Alias>,<#/definitions/aws-cdk-lib.aws_kms.Key>,<#/definitions/aws-cdk-lib.aws_lambda.Alias>,<#/definitions/aws-cdk-lib.aws_lambda.CodeSigningConfig>,<#/definitions/aws-cdk-lib.aws_lambda.DockerImageFunction>,<#/definitions/aws-cdk-lib.aws_lambda.EventInvokeConfig>,<#/definitions/aws-cdk-lib.aws_lambda.EventSourceMapping>,<#/definitions/aws-cdk-lib.aws_lambda.Function>,<#/definitions/aws-cdk-lib.aws_lambda.FunctionUrl>,<#/definitions/aws-cdk-lib.aws_lambda.LayerVersion>,<#/definitions/aws-cdk-lib.aws_lambda.SingletonFunction>,<#/definitions/aws-cdk-lib.aws_lambda.Version>,<#/definitions/aws-cdk-lib.aws_lambda_nodejs.NodejsFunction>,<#/definitions/aws-cdk-lib.aws_logs.CrossAccountDestination>,<#/definitions/aws-cdk-lib.aws_logs.LogGroup>,<#/definitions/aws-cdk-lib.aws_logs.LogRetention>,<#/definitions/aws-cdk-lib.aws_logs.LogStream>,<#/definitions/aws-cdk-lib.aws_logs.MetricFilter>,<#/definitions/aws-cdk-lib.aws_logs.QueryDefinition>,<#/definitions/aws-cdk-lib.aws_logs.ResourcePolicy>,<#/definitions/aws-cdk-lib.aws_logs.SubscriptionFilter>,<#/definitions/aws-cdk-lib.aws_opensearchservice.Domain>,<#/definitions/aws-cdk-lib.aws_rds.DatabaseCluster>,<#/definitions/aws-cdk-lib.aws_rds.DatabaseClusterFromSnapshot>,<#/definitions/aws-cdk-lib.aws_rds.DatabaseInstance>,<#/definitions/aws-cdk-lib.aws_rds.DatabaseInstanceFromSnapshot>,<#/definitions/aws-cdk-lib.aws_rds.DatabaseInstanceReadReplica>,<#/definitions/aws-cdk-lib.aws_rds.DatabaseProxy>,<#/definitions/aws-cdk-lib.aws_rds.DatabaseSecret>,<#/definitions/aws-cdk-lib.aws_rds.OptionGroup>,<#/definitions/aws-cdk-lib.aws_rds.ParameterGroup>,<#/definitions/aws-cdk-lib.aws_rds.ServerlessCluster>,<#/definitions/aws-cdk-lib.aws_rds.ServerlessClusterFromSnapshot>,<#/definitions/aws-cdk-lib.aws_rds.SubnetGroup>,<#/definitions/aws-cdk-lib.aws_route53.ARecord>,<#/definitions/aws-cdk-lib.aws_route53.AaaaRecord>,<#/definitions/aws-cdk-lib.aws_route53.CaaAmazonRecord>,<#/definitions/aws-cdk-lib.aws_route53.CaaRecord>,<#/definitions/aws-cdk-lib.aws_route53.CnameRecord>,<#/definitions/aws-cdk-lib.aws_route53.CrossAccountZoneDelegationRecord>,<#/definitions/aws-cdk-lib.aws_route53.DsRecord>,<#/definitions/aws-cdk-lib.aws_route53.HostedZone>,<#/definitions/aws-cdk-lib.aws_route53.MxRecord>,<#/definitions/aws-cdk-lib.aws_route53.NsRecord>,<#/definitions/aws-cdk-lib.aws_route53.PrivateHostedZone>,<#/definitions/aws-cdk-lib.aws_route53.PublicHostedZone>,<#/definitions/aws-cdk-lib.aws_route53.RecordSet>,<#/definitions/aws-cdk-lib.aws_route53.SrvRecord>,<#/definitions/aws-cdk-lib.aws_route53.TxtRecord>,<#/definitions/aws-cdk-lib.aws_route53.VpcEndpointServiceDomainName>,<#/definitions/aws-cdk-lib.aws_route53.ZoneDelegationRecord>,<#/definitions/aws-cdk-lib.aws_route53_patterns.HttpsRedirect>,<#/definitions/aws-cdk-lib.aws_s3.Bucket>,<#/definitions/aws-cdk-lib.aws_s3.BucketPolicy>,<#/definitions/aws-cdk-lib.aws_s3_assets.Asset>,<#/definitions/aws-cdk-lib.aws_s3_deployment.BucketDeployment>,<#/definitions/aws-cdk-lib.aws_secretsmanager.ResourcePolicy>,<#/definitions/aws-cdk-lib.aws_secretsmanager.RotationSchedule>,<#/definitions/aws-cdk-lib.aws_secretsmanager.Secret>,<#/definitions/aws-cdk-lib.aws_secretsmanager.SecretRotation>,<#/definitions/aws-cdk-lib.aws_secretsmanager.SecretTargetAttachment>,<#/definitions/aws-cdk-lib.aws_servicecatalog.CloudFormationProduct>,<#/definitions/aws-cdk-lib.aws_servicecatalog.Portfolio>,<#/definitions/aws-cdk-lib.aws_servicecatalog.ProductStack>,<#/definitions/aws-cdk-lib.aws_servicecatalog.ProductStackHistory>,<#/definitions/aws-cdk-lib.aws_servicecatalog.TagOptions>,<#/definitions/aws-cdk-lib.aws_servicediscovery.AliasTargetInstance>,<#/definitions/aws-cdk-lib.aws_servicediscovery.CnameInstance>,<#/definitions/aws-cdk-lib.aws_servicediscovery.HttpNamespace>,<#/definitions/aws-cdk-lib.aws_servicediscovery.IpInstance>,<#/definitions/aws-cdk-lib.aws_servicediscovery.NonIpInstance>,<#/definitions/aws-cdk-lib.aws_servicediscovery.PrivateDnsNamespace>,<#/definitions/aws-cdk-lib.aws_servicediscovery.PublicDnsNamespace>,<#/definitions/aws-cdk-lib.aws_servicediscovery.Service>,<#/definitions/aws-cdk-lib.aws_ses.AllowListReceiptFilter>,<#/definitions/aws-cdk-lib.aws_ses.ConfigurationSet>,<#/definitions/aws-cdk-lib.aws_ses.DedicatedIpPool>,<#/definitions/aws-cdk-lib.aws_ses.DropSpamReceiptRule>,<#/definitions/aws-cdk-lib.aws_ses.EmailIdentity>,<#/definitions/aws-cdk-lib.aws_ses.ReceiptFilter>,<#/definitions/aws-cdk-lib.aws_ses.ReceiptRule>,<#/definitions/aws-cdk-lib.aws_ses.ReceiptRuleSet>,<#/definitions/aws-cdk-lib.aws_signer.SigningProfile>,<#/definitions/aws-cdk-lib.aws_sns.Subscription>,<#/definitions/aws-cdk-lib.aws_sns.Topic>,<#/definitions/aws-cdk-lib.aws_sns.TopicPolicy>,<#/definitions/aws-cdk-lib.aws_sqs.Queue>,<#/definitions/aws-cdk-lib.aws_sqs.QueuePolicy>,<#/definitions/aws-cdk-lib.aws_ssm.StringListParameter>,<#/definitions/aws-cdk-lib.aws_ssm.StringParameter>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Activity>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Choice>,<#/definitions/aws-cdk-lib.aws_stepfunctions.CustomState>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Fail>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Map>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Parallel>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Pass>,<#/definitions/aws-cdk-lib.aws_stepfunctions.StateMachine>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Succeed>,<#/definitions/aws-cdk-lib.aws_stepfunctions.Wait>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.AthenaGetQueryExecution>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.AthenaGetQueryResults>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.AthenaStartQueryExecution>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.AthenaStopQueryExecution>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.BatchSubmitJob>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.CallApiGatewayHttpApiEndpoint>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.CallApiGatewayRestApiEndpoint>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.CallAwsService>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.CodeBuildStartBuild>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.DynamoDeleteItem>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.DynamoGetItem>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.DynamoPutItem>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.DynamoUpdateItem>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EcsRunTask>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EksCall>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrAddStep>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrCancelStep>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrContainersCreateVirtualCluster>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrContainersDeleteVirtualCluster>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrContainersStartJobRun>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrCreateCluster>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrModifyInstanceFleetByName>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrModifyInstanceGroupByName>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrSetClusterTerminationProtection>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EmrTerminateCluster>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EvaluateExpression>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.EventBridgePutEvents>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.GlueDataBrewStartJobRun>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.GlueStartJobRun>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.LambdaInvoke>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SageMakerCreateEndpoint>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SageMakerCreateEndpointConfig>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SageMakerCreateModel>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SageMakerCreateTrainingJob>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SageMakerCreateTransformJob>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SageMakerUpdateEndpoint>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SnsPublish>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.SqsSendMessage>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.StepFunctionsInvokeActivity>,<#/definitions/aws-cdk-lib.aws_stepfunctions_tasks.StepFunctionsStartExecution>,<#/definitions/aws-cdk-lib.cloudformation_include.CfnInclude>,<#/definitions/aws-cdk-lib.custom_resources.AwsCustomResource>,<#/definitions/aws-cdk-lib.custom_resources.Provider>,<#/definitions/aws-cdk-lib.lambda_layer_awscli.AwsCliLayer>,<#/definitions/aws-cdk-lib.lambda_layer_kubectl.KubectlLayer>,<#/definitions/aws-cdk-lib.lambda_layer_node_proxy_agent.NodeProxyAgentLayer>,<#/definitions/aws-cdk-lib.pipelines.CodePipeline>,<#/definitions/aws-cdk-lib.triggers.Trigger>,<#/definitions/aws-cdk-lib.triggers.TriggerFunction>,<#/definitions/aws-cdk-lib.AssetStaging>,<#/definitions/aws-cdk-lib.CfnCodeDeployBlueGreenHook>,<#/definitions/aws-cdk-lib.CfnCondition>,<#/definitions/aws-cdk-lib.CfnHook>,<#/definitions/aws-cdk-lib.CfnJson>,<#/definitions/aws-cdk-lib.CfnMapping>,<#/definitions/aws-cdk-lib.CfnOutput>,<#/definitions/aws-cdk-lib.CfnParameter>,<#/definitions/aws-cdk-lib.CfnRule>,<#/definitions/aws-cdk-lib.CustomResource>,<#/definitions/aws-cdk-lib.CustomResourceProvider>,<#/definitions/aws-cdk-lib.NestedStack>,<#/definitions/aws-cdk-lib.Stack>,<#/definitions/aws-cdk-lib.Stage>,<#/definitions/constructs.Construct>
As a user, when my deCDK template is not correct, I want an error messages that tells me what is wrong.
Currently, if a property is incorrect the validation fails to match the resource to an expected definition and returns the unhelpful error as below.
We need to find a way to structure the schema so that it can point a user to missing or wrong properties.