Генерация presigned url для Backblaze

Всем привет!
Пытаюсь получить файл с сервера Backblaze по предварительно подписанной ссылке, созданной с использованием крейта rusoto_s3.
В ответ получаю сообщение об ошибке: Missing header: Content-Length.
Заголовок при генерации ссылки указываю:

let req = rusoto_s3::PutObjectRequest {
            bucket: "cdbs-test".to_string(),
            key: "path_file".to_string(),
            content_length: Some(33_i64),
            content_type: Some("text/html".to_string()),
            ..Default::default()
};

req.get_presigned_url(
            &self.region,
            &self.credentials,
            &PreSignedRequestOption {
                expires_in: std::time::Duration::from_secs(expires)
            },
)

Наплодил тем (к примеру issue) по этому вопросу, но ответа ещё нет.
Кто нибудь сталкивался с такой проблемой?

В общем, если всё правильно понял, то заголовки просто вырезаются вот этой частью кода:


/// Canonicalizes headers into the AWS Canonical Form.
///
/// Read more about it: [HERE](http://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html)
fn canonical_headers(headers: &BTreeMap<String, Vec<Vec<u8>>>) -> String {
    let mut canonical = String::new();

    for (key, value) in headers.iter() {
        if skipped_headers(key) {
            continue;
        }
        canonical.push_str(format!("{}:{}\n", key, canonical_values(value)).as_ref());
    }
    canonical
}
...

fn skipped_headers(header: &str) -> bool {
    ["authorization", "content-length", "user-agent"].contains(&header)
}

signature.rs