{
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/JobDefinitionName",
  "/properties/DataQualityAppSpecification",
  "/properties/DataQualityBaselineConfig",
  "/properties/DataQualityJobInput",
  "/properties/DataQualityJobOutputConfig",
  "/properties/JobResources",
  "/properties/NetworkConfig",
  "/properties/RoleArn",
  "/properties/StoppingCondition",
  "/properties/Tags",
  "/properties/EndpointName"
 ],
 "definitions": {
  "BatchTransformInput": {
   "additionalProperties": false,
   "properties": {
    "DataCapturedDestinationS3Uri": {
     "maxLength": 512,
     "minLength": 0,
     "pattern": "^(https|s3)://([^/]+)/?(.*)$",
     "type": "string"
    },
    "DatasetFormat": {
     "$ref": "#/definitions/DatasetFormat"
    },
    "ExcludeFeaturesAttribute": {
     "maxLength": 100,
     "minLength": 0,
     "type": "string"
    },
    "LocalPath": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "S3DataDistributionType": {
     "enum": [
      "FullyReplicated",
      "ShardedByS3Key"
     ],
     "type": "string"
    },
    "S3InputMode": {
     "enum": [
      "Pipe",
      "File"
     ],
     "type": "string"
    }
   },
   "required": [
    "DataCapturedDestinationS3Uri",
    "DatasetFormat",
    "LocalPath"
   ],
   "type": "object"
  },
  "ClusterConfig": {
   "additionalProperties": false,
   "properties": {
    "InstanceCount": {
     "maximum": 100,
     "minimum": 1,
     "type": "integer"
    },
    "InstanceType": {
     "enum": [
      "ml.c4.2xlarge",
      "ml.c4.4xlarge",
      "ml.c4.8xlarge",
      "ml.c4.xlarge",
      "ml.c5.18xlarge",
      "ml.c5.2xlarge",
      "ml.c5.4xlarge",
      "ml.c5.9xlarge",
      "ml.c5.xlarge",
      "ml.c6i.12xlarge",
      "ml.c6i.16xlarge",
      "ml.c6i.24xlarge",
      "ml.c6i.2xlarge",
      "ml.c6i.32xlarge",
      "ml.c6i.4xlarge",
      "ml.c6i.8xlarge",
      "ml.c6i.xlarge",
      "ml.c7i.12xlarge",
      "ml.c7i.16xlarge",
      "ml.c7i.24xlarge",
      "ml.c7i.2xlarge",
      "ml.c7i.48xlarge",
      "ml.c7i.4xlarge",
      "ml.c7i.8xlarge",
      "ml.c7i.large",
      "ml.c7i.xlarge",
      "ml.g4dn.12xlarge",
      "ml.g4dn.16xlarge",
      "ml.g4dn.2xlarge",
      "ml.g4dn.4xlarge",
      "ml.g4dn.8xlarge",
      "ml.g4dn.xlarge",
      "ml.g5.12xlarge",
      "ml.g5.16xlarge",
      "ml.g5.24xlarge",
      "ml.g5.2xlarge",
      "ml.g5.48xlarge",
      "ml.g5.4xlarge",
      "ml.g5.8xlarge",
      "ml.g5.xlarge",
      "ml.g6.12xlarge",
      "ml.g6.16xlarge",
      "ml.g6.24xlarge",
      "ml.g6.2xlarge",
      "ml.g6.48xlarge",
      "ml.g6.4xlarge",
      "ml.g6.8xlarge",
      "ml.g6.xlarge",
      "ml.g6e.12xlarge",
      "ml.g6e.16xlarge",
      "ml.g6e.24xlarge",
      "ml.g6e.2xlarge",
      "ml.g6e.48xlarge",
      "ml.g6e.4xlarge",
      "ml.g6e.8xlarge",
      "ml.g6e.xlarge",
      "ml.g7e.12xlarge",
      "ml.g7e.24xlarge",
      "ml.g7e.2xlarge",
      "ml.g7e.48xlarge",
      "ml.g7e.4xlarge",
      "ml.g7e.8xlarge",
      "ml.m4.10xlarge",
      "ml.m4.16xlarge",
      "ml.m4.2xlarge",
      "ml.m4.4xlarge",
      "ml.m4.xlarge",
      "ml.m5.12xlarge",
      "ml.m5.24xlarge",
      "ml.m5.2xlarge",
      "ml.m5.4xlarge",
      "ml.m5.large",
      "ml.m5.xlarge",
      "ml.m6i.12xlarge",
      "ml.m6i.16xlarge",
      "ml.m6i.24xlarge",
      "ml.m6i.2xlarge",
      "ml.m6i.32xlarge",
      "ml.m6i.4xlarge",
      "ml.m6i.8xlarge",
      "ml.m6i.large",
      "ml.m6i.xlarge",
      "ml.m7i.12xlarge",
      "ml.m7i.16xlarge",
      "ml.m7i.24xlarge",
      "ml.m7i.2xlarge",
      "ml.m7i.48xlarge",
      "ml.m7i.4xlarge",
      "ml.m7i.8xlarge",
      "ml.m7i.large",
      "ml.m7i.xlarge",
      "ml.p2.16xlarge",
      "ml.p2.8xlarge",
      "ml.p2.xlarge",
      "ml.p3.16xlarge",
      "ml.p3.2xlarge",
      "ml.p3.8xlarge",
      "ml.p5.4xlarge",
      "ml.r5.12xlarge",
      "ml.r5.16xlarge",
      "ml.r5.24xlarge",
      "ml.r5.2xlarge",
      "ml.r5.4xlarge",
      "ml.r5.8xlarge",
      "ml.r5.large",
      "ml.r5.xlarge",
      "ml.r5d.12xlarge",
      "ml.r5d.16xlarge",
      "ml.r5d.24xlarge",
      "ml.r5d.2xlarge",
      "ml.r5d.4xlarge",
      "ml.r5d.8xlarge",
      "ml.r5d.large",
      "ml.r5d.xlarge",
      "ml.r7i.12xlarge",
      "ml.r7i.16xlarge",
      "ml.r7i.24xlarge",
      "ml.r7i.2xlarge",
      "ml.r7i.48xlarge",
      "ml.r7i.4xlarge",
      "ml.r7i.8xlarge",
      "ml.r7i.large",
      "ml.r7i.xlarge",
      "ml.t3.2xlarge",
      "ml.t3.large",
      "ml.t3.medium",
      "ml.t3.xlarge"
     ],
     "type": "string"
    },
    "VolumeKmsKeyId": {
     "maxLength": 2048,
     "maximum": 2048,
     "minLength": 0,
     "minimum": 1,
     "pattern": "^[a-zA-Z0-9:/_-]*$",
     "type": "string"
    },
    "VolumeSizeInGB": {
     "maximum": 16384,
     "minimum": 1,
     "type": "integer"
    }
   },
   "required": [
    "InstanceCount",
    "InstanceType",
    "VolumeSizeInGB"
   ],
   "type": "object"
  },
  "ConstraintsResource": {
   "additionalProperties": false,
   "properties": {
    "S3Uri": {
     "$ref": "#/definitions/S3Uri"
    }
   },
   "type": "object"
  },
  "Csv": {
   "properties": {
    "Header": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "DataQualityAppSpecification": {
   "additionalProperties": false,
   "properties": {
    "ContainerArguments": {
     "items": {
      "maxLength": 256,
      "minLength": 1,
      "type": "string"
     },
     "maxItems": 50,
     "minItems": 1,
     "type": "array"
    },
    "ContainerEntrypoint": {
     "items": {
      "maxLength": 256,
      "minLength": 1,
      "type": "string"
     },
     "maxItems": 100,
     "minItems": 1,
     "type": "array"
    },
    "Environment": {
     "additionalProperties": false,
     "patternProperties": {
      "[\\S\\s]*": {
       "maxLength": 256,
       "type": "string"
      },
      "[a-zA-Z_][a-zA-Z0-9_]*": {
       "maxLength": 256,
       "minLength": 1,
       "type": "string"
      }
     },
     "type": "object"
    },
    "ImageUri": {
     "maxLength": 255,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "PostAnalyticsProcessorSourceUri": {
     "$ref": "#/definitions/S3Uri"
    },
    "RecordPreprocessorSourceUri": {
     "$ref": "#/definitions/S3Uri"
    }
   },
   "required": [
    "ImageUri"
   ],
   "type": "object"
  },
  "DataQualityBaselineConfig": {
   "additionalProperties": false,
   "properties": {
    "BaseliningJobName": {
     "$ref": "#/definitions/ProcessingJobName"
    },
    "ConstraintsResource": {
     "$ref": "#/definitions/ConstraintsResource"
    },
    "StatisticsResource": {
     "$ref": "#/definitions/StatisticsResource"
    }
   },
   "type": "object"
  },
  "DataQualityJobInput": {
   "additionalProperties": false,
   "properties": {
    "BatchTransformInput": {
     "$ref": "#/definitions/BatchTransformInput"
    },
    "EndpointInput": {
     "$ref": "#/definitions/EndpointInput"
    }
   },
   "type": "object"
  },
  "DatasetFormat": {
   "properties": {
    "Csv": {
     "$ref": "#/definitions/Csv"
    },
    "Json": {
     "$ref": "#/definitions/Json"
    },
    "Parquet": {
     "$ref": "#/definitions/Parquet"
    }
   },
   "type": "object"
  },
  "EndpointInput": {
   "additionalProperties": false,
   "properties": {
    "EndpointName": {
     "$ref": "#/definitions/EndpointName"
    },
    "ExcludeFeaturesAttribute": {
     "maxLength": 100,
     "minLength": 0,
     "type": "string"
    },
    "LocalPath": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "S3DataDistributionType": {
     "enum": [
      "FullyReplicated",
      "ShardedByS3Key"
     ],
     "type": "string"
    },
    "S3InputMode": {
     "enum": [
      "Pipe",
      "File"
     ],
     "type": "string"
    }
   },
   "required": [
    "EndpointName",
    "LocalPath"
   ],
   "type": "object"
  },
  "EndpointName": {
   "maxLength": 63,
   "minLength": 0,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*",
   "type": "string"
  },
  "JobDefinitionName": {
   "maxLength": 63,
   "minLength": 1,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$",
   "type": "string"
  },
  "Json": {
   "properties": {
    "Line": {
     "type": "boolean"
    }
   },
   "type": "object"
  },
  "MonitoringOutput": {
   "additionalProperties": false,
   "properties": {
    "S3Output": {
     "$ref": "#/definitions/S3Output"
    }
   },
   "required": [
    "S3Output"
   ],
   "type": "object"
  },
  "MonitoringOutputConfig": {
   "additionalProperties": false,
   "properties": {
    "KmsKeyId": {
     "anyOf": [
      {
       "format": "AWS::KMS::Key.Arn"
      },
      {
       "format": "AWS::KMS::Key.Id"
      },
      {
       "format": "AWS::KMS::Alias.AliasName"
      }
     ],
     "maxLength": 2048,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "MonitoringOutputs": {
     "items": {
      "$ref": "#/definitions/MonitoringOutput"
     },
     "maxItems": 1,
     "maxLength": 1,
     "minItems": 1,
     "minLength": 1,
     "type": "array"
    }
   },
   "required": [
    "MonitoringOutputs"
   ],
   "type": "object"
  },
  "MonitoringResources": {
   "additionalProperties": false,
   "properties": {
    "ClusterConfig": {
     "$ref": "#/definitions/ClusterConfig"
    }
   },
   "required": [
    "ClusterConfig"
   ],
   "type": "object"
  },
  "NetworkConfig": {
   "additionalProperties": false,
   "properties": {
    "EnableInterContainerTrafficEncryption": {
     "type": "boolean"
    },
    "EnableNetworkIsolation": {
     "type": "boolean"
    },
    "VpcConfig": {
     "$ref": "#/definitions/VpcConfig"
    }
   },
   "type": "object"
  },
  "Parquet": {
   "type": "boolean"
  },
  "ProcessingJobName": {
   "maxLength": 63,
   "minLength": 1,
   "pattern": "^[a-zA-Z0-9](-*[a-zA-Z0-9])*$",
   "type": "string"
  },
  "S3Output": {
   "additionalProperties": false,
   "properties": {
    "LocalPath": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "S3UploadMode": {
     "enum": [
      "Continuous",
      "EndOfJob"
     ],
     "type": "string"
    },
    "S3Uri": {
     "maxLength": 512,
     "minLength": 0,
     "pattern": "^(https|s3)://([^/]+)/?(.*)$",
     "type": "string"
    }
   },
   "required": [
    "LocalPath",
    "S3Uri"
   ],
   "type": "object"
  },
  "S3Uri": {
   "maxLength": 1024,
   "minLength": 0,
   "pattern": "^(https|s3)://([^/]+)/?(.*)$",
   "type": "string"
  },
  "StatisticsResource": {
   "additionalProperties": false,
   "properties": {
    "S3Uri": {
     "$ref": "#/definitions/S3Uri"
    }
   },
   "type": "object"
  },
  "StoppingCondition": {
   "additionalProperties": false,
   "properties": {
    "MaxRuntimeInSeconds": {
     "maximum": 86400,
     "minimum": 1,
     "type": "integer"
    }
   },
   "required": [
    "MaxRuntimeInSeconds"
   ],
   "type": "object"
  },
  "Tag": {
   "additionalProperties": false,
   "properties": {
    "Key": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    },
    "Value": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": "^([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)$",
     "type": "string"
    }
   },
   "required": [
    "Key",
    "Value"
   ],
   "type": "object"
  },
  "VpcConfig": {
   "additionalProperties": false,
   "properties": {
    "SecurityGroupIds": {
     "format": "AWS::EC2::SecurityGroup.Ids",
     "items": {
      "format": "AWS::EC2::SecurityGroup.Id",
      "maxLength": 32,
      "minLength": 0,
      "pattern": "[-0-9a-zA-Z]+",
      "type": "string"
     },
     "maxItems": 5,
     "minItems": 1,
     "type": "array"
    },
    "Subnets": {
     "format": "AWS::EC2::Subnet.Ids",
     "items": {
      "format": "AWS::EC2::Subnet.Id",
      "maxLength": 32,
      "minLength": 0,
      "pattern": "[-0-9a-zA-Z]+",
      "type": "string"
     },
     "maxItems": 16,
     "minItems": 1,
     "type": "array"
    }
   },
   "required": [
    "SecurityGroupIds",
    "Subnets"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/JobDefinitionArn"
 ],
 "properties": {
  "CreationTime": {
   "type": "string"
  },
  "DataQualityAppSpecification": {
   "$ref": "#/definitions/DataQualityAppSpecification"
  },
  "DataQualityBaselineConfig": {
   "$ref": "#/definitions/DataQualityBaselineConfig"
  },
  "DataQualityJobInput": {
   "$ref": "#/definitions/DataQualityJobInput"
  },
  "DataQualityJobOutputConfig": {
   "$ref": "#/definitions/MonitoringOutputConfig"
  },
  "EndpointName": {
   "$ref": "#/definitions/EndpointName"
  },
  "JobDefinitionArn": {
   "maxLength": 256,
   "minLength": 1,
   "type": "string"
  },
  "JobDefinitionName": {
   "$ref": "#/definitions/JobDefinitionName"
  },
  "JobResources": {
   "$ref": "#/definitions/MonitoringResources"
  },
  "NetworkConfig": {
   "$ref": "#/definitions/NetworkConfig"
  },
  "RoleArn": {
   "format": "AWS::IAM::Role.Arn",
   "maxLength": 2048,
   "minLength": 20,
   "pattern": "^arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+$",
   "type": "string"
  },
  "StoppingCondition": {
   "$ref": "#/definitions/StoppingCondition"
  },
  "Tags": {
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "maxItems": 50,
   "minItems": 0,
   "type": "array"
  }
 },
 "readOnlyProperties": [
  "/properties/CreationTime",
  "/properties/JobDefinitionArn"
 ],
 "required": [
  "DataQualityAppSpecification",
  "DataQualityJobInput",
  "DataQualityJobOutputConfig",
  "JobResources",
  "RoleArn"
 ],
 "tagging": {
  "cloudFormationSystemTags": true,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": false,
  "taggable": true
 },
 "typeName": "AWS::SageMaker::DataQualityJobDefinition",
 "writeOnlyProperties": [
  "/properties/EndpointName"
 ]
}
