def describe_job_flows(CreatedAfter=None, CreatedBefore=None, JobFlowIds=
    None, JobFlowStates=None):
    """
    This API is deprecated and will eventually be removed. We recommend you use  ListClusters ,  DescribeCluster ,  ListSteps ,  ListInstanceGroups and  ListBootstrapActions instead.
    DescribeJobFlows returns a list of job flows that match all of the supplied parameters. The parameters can include a list of job flow IDs, job flow states, and restrictions on job flow creation date and time.
    Regardless of supplied parameters, only job flows created within the last two months are returned.
    If no parameters are supplied, then job flows matching either of the following criteria are returned:
    Amazon EMR can return a maximum of 512 job flow descriptions.
    See also: AWS API Documentation
    
    
    :example: response = client.describe_job_flows(
        CreatedAfter=datetime(2015, 1, 1),
        CreatedBefore=datetime(2015, 1, 1),
        JobFlowIds=[
            'string',
        ],
        JobFlowStates=[
            'STARTING'|'BOOTSTRAPPING'|'RUNNING'|'WAITING'|'SHUTTING_DOWN'|'TERMINATED'|'COMPLETED'|'FAILED',
        ]
    )
    
    
    :type CreatedAfter: datetime
    :param CreatedAfter: Return only job flows created after this date and time.

    :type CreatedBefore: datetime
    :param CreatedBefore: Return only job flows created before this date and time.

    :type JobFlowIds: list
    :param JobFlowIds: Return only job flows whose job flow ID is contained in this list.
            (string) --
            

    :type JobFlowStates: list
    :param JobFlowStates: Return only job flows whose state is contained in this list.
            (string) --The type of instance.
            

    :rtype: dict
    :return: {
        'JobFlows': [
            {
                'JobFlowId': 'string',
                'Name': 'string',
                'LogUri': 'string',
                'AmiVersion': 'string',
                'ExecutionStatusDetail': {
                    'State': 'STARTING'|'BOOTSTRAPPING'|'RUNNING'|'WAITING'|'SHUTTING_DOWN'|'TERMINATED'|'COMPLETED'|'FAILED',
                    'CreationDateTime': datetime(2015, 1, 1),
                    'StartDateTime': datetime(2015, 1, 1),
                    'ReadyDateTime': datetime(2015, 1, 1),
                    'EndDateTime': datetime(2015, 1, 1),
                    'LastStateChangeReason': 'string'
                },
                'Instances': {
                    'MasterInstanceType': 'string',
                    'MasterPublicDnsName': 'string',
                    'MasterInstanceId': 'string',
                    'SlaveInstanceType': 'string',
                    'InstanceCount': 123,
                    'InstanceGroups': [
                        {
                            'InstanceGroupId': 'string',
                            'Name': 'string',
                            'Market': 'ON_DEMAND'|'SPOT',
                            'InstanceRole': 'MASTER'|'CORE'|'TASK',
                            'BidPrice': 'string',
                            'InstanceType': 'string',
                            'InstanceRequestCount': 123,
                            'InstanceRunningCount': 123,
                            'State': 'PROVISIONING'|'BOOTSTRAPPING'|'RUNNING'|'RESIZING'|'SUSPENDED'|'TERMINATING'|'TERMINATED'|'ARRESTED'|'SHUTTING_DOWN'|'ENDED',
                            'LastStateChangeReason': 'string',
                            'CreationDateTime': datetime(2015, 1, 1),
                            'StartDateTime': datetime(2015, 1, 1),
                            'ReadyDateTime': datetime(2015, 1, 1),
                            'EndDateTime': datetime(2015, 1, 1)
                        },
                    ],
                    'NormalizedInstanceHours': 123,
                    'Ec2KeyName': 'string',
                    'Ec2SubnetId': 'string',
                    'Placement': {
                        'AvailabilityZone': 'string',
                        'AvailabilityZones': [
                            'string',
                        ]
                    },
                    'KeepJobFlowAliveWhenNoSteps': True|False,
                    'TerminationProtected': True|False,
                    'HadoopVersion': 'string'
                },
                'Steps': [
                    {
                        'StepConfig': {
                            'Name': 'string',
                            'ActionOnFailure': 'TERMINATE_JOB_FLOW'|'TERMINATE_CLUSTER'|'CANCEL_AND_WAIT'|'CONTINUE',
                            'HadoopJarStep': {
                                'Properties': [
                                    {
                                        'Key': 'string',
                                        'Value': 'string'
                                    },
                                ],
                                'Jar': 'string',
                                'MainClass': 'string',
                                'Args': [
                                    'string',
                                ]
                            }
                        },
                        'ExecutionStatusDetail': {
                            'State': 'PENDING'|'RUNNING'|'CONTINUE'|'COMPLETED'|'CANCELLED'|'FAILED'|'INTERRUPTED',
                            'CreationDateTime': datetime(2015, 1, 1),
                            'StartDateTime': datetime(2015, 1, 1),
                            'EndDateTime': datetime(2015, 1, 1),
                            'LastStateChangeReason': 'string'
                        }
                    },
                ],
                'BootstrapActions': [
                    {
                        'BootstrapActionConfig': {
                            'Name': 'string',
                            'ScriptBootstrapAction': {
                                'Path': 'string',
                                'Args': [
                                    'string',
                                ]
                            }
                        }
                    },
                ],
                'SupportedProducts': [
                    'string',
                ],
                'VisibleToAllUsers': True|False,
                'JobFlowRole': 'string',
                'ServiceRole': 'string',
                'AutoScalingRole': 'string',
                'ScaleDownBehavior': 'TERMINATE_AT_INSTANCE_HOUR'|'TERMINATE_AT_TASK_COMPLETION'
            },
        ]
    }
    
    
    :returns: 
    CreatedAfter (datetime) -- Return only job flows created after this date and time.
    CreatedBefore (datetime) -- Return only job flows created before this date and time.
    JobFlowIds (list) -- Return only job flows whose job flow ID is contained in this list.
    
    (string) --
    
    
    JobFlowStates (list) -- Return only job flows whose state is contained in this list.
    
    (string) --The type of instance.
    
    
    
    
    """
    pass
