def __init__(self, directory_uri=None, file_uri=None, **kwargs):
        if not exactly_one(directory_uri, file_uri):
            raise ETLInputError('One of file_uri or directory_uri needed')

        super(ExtractS3Step, self).__init__(**kwargs)

        if directory_uri:
            directory_uri = get_modified_s3_path(directory_uri)
            s3_path = S3Path(uri=directory_uri, is_directory=True)
        else:
            file_uri = get_modified_s3_path(file_uri)
            s3_path = S3Path(uri=file_uri)
        self._output = self.create_s3_data_node(s3_path)
Shorthand for a filter by association with an object
dataset/ETHPy150Open coursera/dataduct/dataduct/steps/extract_s3.py/ExtractS3Step.__init__--crossover with--dataset/ETHPy150Open ooici/pyon/pyon/ion/resregistry.py/ResourceQuery.filter_associated_with_object