'Creates a directory and any parent directory if necessary.
Actually it creates an empty object: s3://[bucket]/[path]/'

@translate_s3_error
@auth_error_handler
def mkdir(self, path, *args, **kwargs):

    (bucket_name, key_name) = s3.parse_uri(path)[:2]
    if (not BUCKET_NAME_PATTERN.match(bucket_name)):
        raise S3FileSystemException((_('Invalid    bucket    name:    %s') % bucket_name))
    try:
        self._get_or_create_bucket(bucket_name)
    except S3FileSystemException as e:
        raise e
    except S3ResponseError as e:
        raise S3FileSystemException((_('Failed    to    create    S3    bucket    "%s":    %s') % (bucket_name, e.reason)))
    except Exception as e:
        raise S3FileSystemException((_('Failed    to    create    S3    bucket    "%s":    %s') % (bucket_name, e)))
    stats = self._stats(path)
    if stats:
        if stats.isDir:
            return None
        else:
            raise S3FileSystemException(("'%s'    already    exists    and    is    not    a    directory" % path))
    path = self._append_separator(path)
    self.create(path)
