#amazon-s3 #mountpoint #client #http-client #object #aws #aws-sdk

mountpoint-s3-client

为Mountpoint for Amazon S3提供高性能的Amazon S3客户端

14个版本 (8个破坏性版本)

0.9.0 2024年6月26日
0.8.0 2024年3月8日
0.6.1 2023年12月1日
0.6.0 2023年11月28日
0.0.1 2023年3月14日

#2281 in 网络编程

Download history 35/week @ 2024-04-22 277/week @ 2024-04-29 28/week @ 2024-05-06 35/week @ 2024-05-13 10/week @ 2024-05-20 15/week @ 2024-05-27 10/week @ 2024-06-10 291/week @ 2024-06-24 766/week @ 2024-07-01 1/week @ 2024-07-08 21/week @ 2024-07-22 378/week @ 2024-07-29 97/week @ 2024-08-05

每月496次下载

Apache-2.0

40MB
1M SLoC

GNU Style Assembly 626K SLoC // 0.0% comments C 225K SLoC // 0.2% comments Perl 82K SLoC // 0.1% comments C++ 79K SLoC // 0.1% comments Assembly 76K SLoC // 0.0% comments Go 22K SLoC // 0.1% comments Rust 9K SLoC // 0.1% comments Python 3.5K SLoC // 0.4% comments Shell 3K SLoC // 0.3% comments Batch 82 SLoC Bitbake 72 SLoC // 0.7% comments Kotlin 8 SLoC

mountpoint-s3-client

此crate为Mountpoint for Amazon S3提供了高性能的Amazon S3客户端。客户端绑定到AWS Common Runtime,它提供了AWS身份验证、HTTP客户端和低级IO原语等功能。

此crate不适用于通用用途,我们认为其接口是不稳定的。寻找通用用途的Rust版Amazon S3客户端的客户应使用官方的AWS SDK for Rust


lib.rs:

基于AWS Common Runtime (AWS CRT)构建的Amazon S3客户端。

此crate提供了Amazon S3客户端的高性能实现,该客户端使用AWS Common Runtime (CRT)。CRT是一个用于与AWS服务交互的软件库,提供IO、HTTP和加密等组件。CRT是为了高性能和低资源使用而专门构建的,以最有效地使用您的计算资源。对于Amazon S3,CRT包括一个客户端,该客户端实现了最佳实践的性能设计模式,包括超时、重试和自动请求并行化以提高吞吐量。

此crate不适用于通用用途,我们认为其接口是不稳定的。寻找通用用途的Rust版Amazon S3客户端的客户应使用官方的AWS SDK for Rust

示例

构建一个新的S3客户端并从位于us-east-1区域的存储桶中下载对象

use futures::TryStreamExt;
use mountpoint_s3_client::{S3CrtClient, ObjectClient};

let client = S3CrtClient::new(Default::default()).expect("client construction failed");

let response = client.get_object("my-bucket", "my-key", None, None).await.expect("get_object failed");
let body = response.map_ok(|(offset, body)| body.to_vec()).try_concat().await.expect("body streaming failed");

要进一步配置客户端,请使用S3ClientConfig构建器

use mountpoint_s3_client::S3CrtClient;
use mountpoint_s3_client::config::{S3ClientAuthConfig, S3ClientConfig, EndpointConfig};

let config = S3ClientConfig::new()
                .endpoint_config(EndpointConfig::new("us-west-2"))
                .auth_config(S3ClientAuthConfig::NoSigning)
                .user_agent_prefix("my-test-client");
let client = S3CrtClient::new(config).expect("client construction failed");

依赖项

~8–22MB
~326K SLoC