{
 "additionalIdentifiers": [
  [
   "/properties/ProcessingJobName"
  ]
 ],
 "additionalProperties": false,
 "createOnlyProperties": [
  "/properties/AppSpecification",
  "/properties/Environment",
  "/properties/ExperimentConfig",
  "/properties/NetworkConfig",
  "/properties/ProcessingInputs",
  "/properties/ProcessingJobName",
  "/properties/ProcessingOutputConfig",
  "/properties/ProcessingResources",
  "/properties/RoleArn",
  "/properties/StoppingCondition",
  "/properties/Tags"
 ],
 "definitions": {
  "AppSpecification": {
   "additionalProperties": false,
   "properties": {
    "ContainerArguments": {
     "insertionOrder": false,
     "items": {
      "maxLength": 256,
      "minLength": 0,
      "pattern": ".*",
      "type": "string"
     },
     "maxItems": 100,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    },
    "ContainerEntrypoint": {
     "insertionOrder": false,
     "items": {
      "maxLength": 256,
      "minLength": 0,
      "pattern": ".*",
      "type": "string"
     },
     "maxItems": 100,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    },
    "ImageUri": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    }
   },
   "required": [
    "ImageUri"
   ],
   "type": "object"
  },
  "AthenaDatasetDefinition": {
   "additionalProperties": false,
   "properties": {
    "Catalog": {
     "maxLength": 256,
     "minLength": 1,
     "type": "string"
    },
    "Database": {
     "maxLength": 255,
     "minLength": 1,
     "pattern": ".*",
     "type": "string"
    },
    "KmsKeyId": {
     "maxLength": 2048,
     "minLength": 0,
     "pattern": "[a-zA-Z0-9:/_-]*",
     "type": "string"
    },
    "OutputCompression": {
     "enum": [
      "GZIP",
      "SNAPPY",
      "ZLIB"
     ],
     "type": "string"
    },
    "OutputFormat": {
     "enum": [
      "PARQUET",
      "AVRO",
      "ORC",
      "JSON",
      "TEXTFILE"
     ],
     "type": "string"
    },
    "OutputS3Uri": {
     "maxLength": 1024,
     "minLength": 0,
     "pattern": "(https|s3)://([^/]+)/?(.*)",
     "type": "string"
    },
    "QueryString": {
     "maxLength": 4096,
     "minLength": 1,
     "pattern": "[\\s\\S]+",
     "type": "string"
    },
    "WorkGroup": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": "[a-zA-Z0-9._-]+",
     "type": "string"
    }
   },
   "required": [
    "QueryString",
    "OutputS3Uri",
    "Catalog",
    "Database",
    "OutputFormat"
   ],
   "type": "object"
  },
  "ClusterConfig": {
   "additionalProperties": false,
   "properties": {
    "InstanceCount": {
     "maximum": 100,
     "minimum": 1,
     "type": "integer"
    },
    "InstanceType": {
     "enum": [
      "ml.t3.medium",
      "ml.t3.large",
      "ml.t3.xlarge",
      "ml.t3.2xlarge",
      "ml.m4.xlarge",
      "ml.m4.2xlarge",
      "ml.m4.4xlarge",
      "ml.m4.10xlarge",
      "ml.m4.16xlarge",
      "ml.c4.xlarge",
      "ml.c4.2xlarge",
      "ml.c4.4xlarge",
      "ml.c4.8xlarge",
      "ml.c5.xlarge",
      "ml.c5.2xlarge",
      "ml.c5.4xlarge",
      "ml.c5.9xlarge",
      "ml.c5.18xlarge",
      "ml.m5.large",
      "ml.m5.xlarge",
      "ml.m5.2xlarge",
      "ml.m5.4xlarge",
      "ml.m5.12xlarge",
      "ml.m5.24xlarge",
      "ml.r5.large",
      "ml.r5.xlarge",
      "ml.r5.2xlarge",
      "ml.r5.4xlarge",
      "ml.r5.8xlarge",
      "ml.r5.12xlarge",
      "ml.r5.16xlarge",
      "ml.r5.24xlarge",
      "ml.g4dn.xlarge",
      "ml.g4dn.2xlarge",
      "ml.g4dn.4xlarge",
      "ml.g4dn.8xlarge",
      "ml.g4dn.12xlarge",
      "ml.g4dn.16xlarge",
      "ml.g5.xlarge",
      "ml.g5.2xlarge",
      "ml.g5.4xlarge",
      "ml.g5.8xlarge",
      "ml.g5.16xlarge",
      "ml.g5.12xlarge",
      "ml.g5.24xlarge",
      "ml.g5.48xlarge",
      "ml.r5d.large",
      "ml.r5d.xlarge",
      "ml.r5d.2xlarge",
      "ml.r5d.4xlarge",
      "ml.r5d.8xlarge",
      "ml.r5d.12xlarge",
      "ml.r5d.16xlarge",
      "ml.r5d.24xlarge",
      "ml.g6.xlarge",
      "ml.g6.2xlarge",
      "ml.g6.4xlarge",
      "ml.g6.8xlarge",
      "ml.g6.12xlarge",
      "ml.g6.16xlarge",
      "ml.g6.24xlarge",
      "ml.g6.48xlarge",
      "ml.g6e.xlarge",
      "ml.g6e.2xlarge",
      "ml.g6e.4xlarge",
      "ml.g6e.8xlarge",
      "ml.g6e.12xlarge",
      "ml.g6e.16xlarge",
      "ml.g6e.24xlarge",
      "ml.g6e.48xlarge",
      "ml.m6i.large",
      "ml.m6i.xlarge",
      "ml.m6i.2xlarge",
      "ml.m6i.4xlarge",
      "ml.m6i.8xlarge",
      "ml.m6i.12xlarge",
      "ml.m6i.16xlarge",
      "ml.m6i.24xlarge",
      "ml.m6i.32xlarge",
      "ml.c6i.xlarge",
      "ml.c6i.2xlarge",
      "ml.c6i.4xlarge",
      "ml.c6i.8xlarge",
      "ml.c6i.12xlarge",
      "ml.c6i.16xlarge",
      "ml.c6i.24xlarge",
      "ml.c6i.32xlarge",
      "ml.m7i.large",
      "ml.m7i.xlarge",
      "ml.m7i.2xlarge",
      "ml.m7i.4xlarge",
      "ml.m7i.8xlarge",
      "ml.m7i.12xlarge",
      "ml.m7i.16xlarge",
      "ml.m7i.24xlarge",
      "ml.m7i.48xlarge",
      "ml.c7i.large",
      "ml.c7i.xlarge",
      "ml.c7i.2xlarge",
      "ml.c7i.4xlarge",
      "ml.c7i.8xlarge",
      "ml.c7i.12xlarge",
      "ml.c7i.16xlarge",
      "ml.c7i.24xlarge",
      "ml.c7i.48xlarge",
      "ml.r7i.large",
      "ml.r7i.xlarge",
      "ml.r7i.2xlarge",
      "ml.r7i.4xlarge",
      "ml.r7i.8xlarge",
      "ml.r7i.12xlarge",
      "ml.r7i.16xlarge",
      "ml.r7i.24xlarge",
      "ml.r7i.48xlarge"
     ],
     "type": "string"
    },
    "VolumeKmsKeyId": {
     "maxLength": 2048,
     "minLength": 0,
     "pattern": "[a-zA-Z0-9:/_-]*",
     "type": "string"
    },
    "VolumeSizeInGB": {
     "maximum": 16384,
     "minimum": 1,
     "type": "integer"
    }
   },
   "required": [
    "InstanceCount",
    "InstanceType",
    "VolumeSizeInGB"
   ],
   "type": "object"
  },
  "DatasetDefinition": {
   "additionalProperties": false,
   "properties": {
    "AthenaDatasetDefinition": {
     "$ref": "#/definitions/AthenaDatasetDefinition"
    },
    "DataDistributionType": {
     "enum": [
      "FullyReplicated",
      "ShardedByS3Key"
     ],
     "type": "string"
    },
    "InputMode": {
     "enum": [
      "File",
      "Pipe"
     ],
     "type": "string"
    },
    "LocalPath": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "RedshiftDatasetDefinition": {
     "$ref": "#/definitions/RedshiftDatasetDefinition"
    }
   },
   "type": "object"
  },
  "Environment": {
   "additionalProperties": false,
   "patternProperties": {
    "[\\S\\s]*": {
     "maxLength": 256,
     "type": "string"
    },
    "[a-zA-Z_][a-zA-Z0-9_]*": {
     "maxLength": 256,
     "type": "string"
    }
   },
   "type": "object"
  },
  "ExperimentConfig": {
   "additionalProperties": false,
   "properties": {
    "ExperimentName": {
     "maxLength": 120,
     "pattern": "[a-zA-Z0-9](-*[a-zA-Z0-9]){0,119}",
     "type": "string"
    },
    "RunName": {
     "maxLength": 120,
     "pattern": "[a-zA-Z0-9](-*[a-zA-Z0-9]){0,119}",
     "type": "string"
    },
    "TrialComponentDisplayName": {
     "maxLength": 120,
     "pattern": "[a-zA-Z0-9](-*[a-zA-Z0-9]){0,119}",
     "type": "string"
    },
    "TrialName": {
     "maxLength": 120,
     "pattern": "[a-zA-Z0-9](-*[a-zA-Z0-9]){0,119}",
     "type": "string"
    }
   },
   "type": "object"
  },
  "FeatureStoreOutput": {
   "additionalProperties": false,
   "properties": {
    "FeatureGroupName": {
     "maxLength": 64,
     "pattern": "[a-zA-Z0-9]([_-]*[a-zA-Z0-9]){0,63}",
     "type": "string"
    }
   },
   "required": [
    "FeatureGroupName"
   ],
   "type": "object"
  },
  "NetworkConfig": {
   "additionalProperties": false,
   "properties": {
    "EnableInterContainerTrafficEncryption": {
     "type": "boolean"
    },
    "EnableNetworkIsolation": {
     "type": "boolean"
    },
    "VpcConfig": {
     "$ref": "#/definitions/VpcConfig"
    }
   },
   "type": "object"
  },
  "ProcessingInputsObject": {
   "additionalProperties": false,
   "properties": {
    "AppManaged": {
     "type": "boolean"
    },
    "DatasetDefinition": {
     "$ref": "#/definitions/DatasetDefinition"
    },
    "InputName": {
     "type": "string"
    },
    "S3Input": {
     "$ref": "#/definitions/S3Input"
    }
   },
   "required": [
    "InputName"
   ],
   "type": "object"
  },
  "ProcessingOutputConfig": {
   "additionalProperties": false,
   "properties": {
    "KmsKeyId": {
     "maxLength": 2048,
     "pattern": "[a-zA-Z0-9:/_-]*",
     "type": "string"
    },
    "Outputs": {
     "insertionOrder": false,
     "items": {
      "$ref": "#/definitions/ProcessingOutputsObject"
     },
     "maxItems": 10,
     "type": "array"
    }
   },
   "required": [
    "Outputs"
   ],
   "type": "object"
  },
  "ProcessingOutputsObject": {
   "additionalProperties": false,
   "properties": {
    "AppManaged": {
     "type": "boolean"
    },
    "FeatureStoreOutput": {
     "$ref": "#/definitions/FeatureStoreOutput"
    },
    "OutputName": {
     "type": "string"
    },
    "S3Output": {
     "$ref": "#/definitions/S3Output"
    }
   },
   "required": [
    "OutputName"
   ],
   "type": "object"
  },
  "ProcessingResources": {
   "additionalProperties": false,
   "properties": {
    "ClusterConfig": {
     "$ref": "#/definitions/ClusterConfig"
    }
   },
   "required": [
    "ClusterConfig"
   ],
   "type": "object"
  },
  "RedshiftDatasetDefinition": {
   "additionalProperties": false,
   "properties": {
    "ClusterId": {
     "maxLength": 63,
     "minLength": 1,
     "pattern": ".*",
     "type": "string"
    },
    "ClusterRoleArn": {
     "maxLength": 2048,
     "minLength": 20,
     "pattern": "arn:aws[a-z\\-]*:iam::\\d{12}:role/?[a-zA-Z_0-9+=,.@\\-_/]+",
     "type": "string"
    },
    "Database": {
     "maxLength": 64,
     "minLength": 1,
     "pattern": ".*",
     "type": "string"
    },
    "DbUser": {
     "maxLength": 128,
     "minLength": 1,
     "pattern": ".*",
     "type": "string"
    },
    "KmsKeyId": {
     "maxLength": 2048,
     "minLength": 0,
     "pattern": "[a-zA-Z0-9:/_-]*",
     "type": "string"
    },
    "OutputCompression": {
     "enum": [
      "None",
      "GZIP",
      "SNAPPY",
      "ZSTD",
      "BZIP2"
     ],
     "type": "string"
    },
    "OutputFormat": {
     "enum": [
      "PARQUET",
      "CSV"
     ],
     "type": "string"
    },
    "OutputS3Uri": {
     "maxLength": 1024,
     "minLength": 0,
     "pattern": "(https|s3)://([^/]+)/?(.*)",
     "type": "string"
    },
    "QueryString": {
     "maxLength": 4096,
     "minLength": 1,
     "pattern": "[\\s\\S]+",
     "type": "string"
    }
   },
   "required": [
    "ClusterId",
    "ClusterRoleArn",
    "QueryString",
    "Database",
    "DbUser",
    "OutputS3Uri",
    "OutputFormat"
   ],
   "type": "object"
  },
  "S3Input": {
   "additionalProperties": false,
   "properties": {
    "LocalPath": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "S3CompressionType": {
     "enum": [
      "None",
      "Gzip"
     ],
     "type": "string"
    },
    "S3DataDistributionType": {
     "enum": [
      "FullyReplicated",
      "ShardedByS3Key"
     ],
     "type": "string"
    },
    "S3DataType": {
     "enum": [
      "ManifestFile",
      "S3Prefix"
     ],
     "type": "string"
    },
    "S3InputMode": {
     "enum": [
      "File",
      "Pipe"
     ],
     "type": "string"
    },
    "S3Uri": {
     "maxLength": 1024,
     "minLength": 0,
     "pattern": "(https|s3)://([^/]+)/?(.*)",
     "type": "string"
    }
   },
   "required": [
    "S3Uri",
    "S3DataType"
   ],
   "type": "object"
  },
  "S3Output": {
   "additionalProperties": false,
   "properties": {
    "LocalPath": {
     "maxLength": 256,
     "minLength": 0,
     "pattern": ".*",
     "type": "string"
    },
    "S3UploadMode": {
     "enum": [
      "Continuous",
      "EndOfJob"
     ],
     "type": "string"
    },
    "S3Uri": {
     "maxLength": 1024,
     "minLength": 0,
     "pattern": "(https|s3)://([^/]+)/?(.*)",
     "type": "string"
    }
   },
   "required": [
    "S3Uri",
    "S3UploadMode"
   ],
   "type": "object"
  },
  "StoppingCondition": {
   "additionalProperties": false,
   "properties": {
    "MaxRuntimeInSeconds": {
     "maximum": 777600,
     "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,
     "pattern": "([\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*)",
     "type": "string"
    }
   },
   "required": [
    "Value",
    "Key"
   ],
   "type": "object"
  },
  "VpcConfig": {
   "additionalProperties": false,
   "properties": {
    "SecurityGroupIds": {
     "format": "AWS::EC2::SecurityGroup.Ids",
     "insertionOrder": false,
     "items": {
      "format": "AWS::EC2::SecurityGroup.Id",
      "maxLength": 32,
      "minLength": 0,
      "pattern": "[-0-9a-zA-Z]+",
      "type": "string"
     },
     "maxItems": 5,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    },
    "Subnets": {
     "format": "AWS::EC2::Subnet.Ids",
     "insertionOrder": false,
     "items": {
      "format": "AWS::EC2::Subnet.Id",
      "maxLength": 32,
      "minLength": 0,
      "pattern": "[-0-9a-zA-Z]+",
      "type": "string"
     },
     "maxItems": 16,
     "minItems": 0,
     "type": "array",
     "uniqueItems": false
    }
   },
   "required": [
    "SecurityGroupIds",
    "Subnets"
   ],
   "type": "object"
  }
 },
 "primaryIdentifier": [
  "/properties/ProcessingJobArn"
 ],
 "properties": {
  "AppSpecification": {
   "$ref": "#/definitions/AppSpecification"
  },
  "AutoMLJobArn": {
   "maxLength": 256,
   "type": "string"
  },
  "CreationTime": {
   "type": "string"
  },
  "Environment": {
   "$ref": "#/definitions/Environment"
  },
  "ExitMessage": {
   "maxLength": 1024,
   "pattern": "[\\S\\s]*",
   "type": "string"
  },
  "ExperimentConfig": {
   "$ref": "#/definitions/ExperimentConfig"
  },
  "FailureReason": {
   "maxLength": 1024,
   "type": "string"
  },
  "LastModifiedTime": {
   "type": "string"
  },
  "MonitoringScheduleArn": {
   "maxLength": 256,
   "type": "string"
  },
  "NetworkConfig": {
   "$ref": "#/definitions/NetworkConfig"
  },
  "ProcessingEndTime": {
   "type": "string"
  },
  "ProcessingInputs": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/ProcessingInputsObject"
   },
   "maxItems": 10,
   "minItems": 0,
   "type": "array",
   "uniqueItems": false
  },
  "ProcessingJobArn": {
   "maxLength": 256,
   "minLength": 0,
   "pattern": "arn:aws[a-z\\-]*:sagemaker:[a-z0-9\\-]*:[0-9]{12}:processing-job/.*",
   "type": "string"
  },
  "ProcessingJobName": {
   "maxLength": 63,
   "minLength": 1,
   "pattern": "[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}",
   "type": "string"
  },
  "ProcessingJobStatus": {
   "enum": [
    "Completed",
    "InProgress",
    "Stopping",
    "Stopped",
    "Failed"
   ],
   "type": "string"
  },
  "ProcessingOutputConfig": {
   "$ref": "#/definitions/ProcessingOutputConfig"
  },
  "ProcessingResources": {
   "$ref": "#/definitions/ProcessingResources"
  },
  "ProcessingStartTime": {
   "type": "string"
  },
  "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": {
   "insertionOrder": false,
   "items": {
    "$ref": "#/definitions/Tag"
   },
   "maxItems": 50,
   "type": "array",
   "uniqueItems": false
  },
  "TrainingJobArn": {
   "maxLength": 256,
   "type": "string"
  }
 },
 "readOnlyProperties": [
  "/properties/ProcessingJobArn",
  "/properties/TrainingJobArn",
  "/properties/AutoMLJobArn",
  "/properties/ExitMessage",
  "/properties/FailureReason",
  "/properties/MonitoringScheduleArn",
  "/properties/ProcessingJobStatus",
  "/properties/CreationTime",
  "/properties/LastModifiedTime",
  "/properties/ProcessingStartTime",
  "/properties/ProcessingEndTime"
 ],
 "replacementStrategy": "delete_then_create",
 "required": [
  "AppSpecification",
  "ProcessingResources",
  "RoleArn"
 ],
 "tagging": {
  "cloudFormationSystemTags": false,
  "tagOnCreate": true,
  "tagProperty": "/properties/Tags",
  "tagUpdatable": false,
  "taggable": true
 },
 "typeName": "AWS::SageMaker::ProcessingJob"
}
