依存が少ない Rust 向けの S3 クライアントライブラリを公開しました
AWS の公式 Rust SDK があまりにも依存が多すぎたので、Sans I/O な S3 クライアントライブラリを自前で作る事にしました。
逃げ切れないライブラリ
S3 クライアントを作るにあたり必ず必要なライブラリがあります。
- MD5
- SHA-1
- SHA-2
- HMAC
- Base64
- CRC32 / CRC64
さすがにこれらを自作するわけにはいかないので、依存をさせています。ただし SHA-1 と SHA-2 と HMAC は aws-lc-rs を指定できるようにしました。
これは rustls では基本的に aws-lc-rs を採用するので、その場合はそちらのライブラリをつかうようにするためです。feature で aw-lc-rs を指定できるようにしました。
Sans I/O
もちろん、Sans I/O つまり I/O 依存なしです。さらにいうなら HTTP/1.1 にすら依存もしていません。もともとは自社で公開している shiguredo_http11 に依存させていたのですが、あまり意味がないなと言うことで、依存をやめてしまいました。ただ、将来的には依存させるかもしれません。
今後
積極的に枯れさせていきます。また気軽に aws-sdk-rus へ移行できるように、スタイルは寄せていこうと思います。
GitHub - shiguredo/s3-rs: Sans I/O Amazon S3 client library for Rust
Sans I/O Amazon S3 client library for Rust. Contribute to shiguredo/s3-rs development by creating an account on GitHub.