17 releases (9 breaking)
0.10.1 | Aug 11, 2024 |
---|---|
0.10.0 | Apr 16, 2024 |
0.9.0 | Mar 10, 2024 |
0.8.1 | Dec 9, 2023 |
0.4.0 | Mar 8, 2023 |
#99 in HTTP server
3,425 downloads per month
Used in 10 crates
(4 directly)
2MB
37K
SLoC
s3s
S3 Service Adapter
crate | version | docs |
---|---|---|
s3s | ||
s3s-aws | ||
s3s-fs |
This experimental project intends to offer an ergonomic adapter for building S3-compatible services.
s3s
implements Amazon S3 REST API in the form of a generic hyper service. S3-compatible services can focus on the S3 API itself and don't have to care about the HTTP layer.
s3s-aws
provides useful types and integration with aws-sdk-s3
.
s3s-fs
implements the S3 API based on file system, as a sample implementation. It is designed for integration testing, which can be used to mock an S3 client. It also provides a binary for debugging. Play it!
How it works
The diagram above shows how s3s
works.
s3s
converts HTTP requests to operation inputs before calling the user-defined service.
s3s
converts operation outputs or errors to HTTP responses after calling the user-defined service.
The data types, serialization and deserialization are generated from the smithy model in aws-sdk-rust repository. We apply manual hacks to fix some problems in smithy server codegen and make s3s
ready to use now.
Security
S3Service
and other adapters in this project have no security protection. If they are exposed to the Internet directly, they may be attacked.
It is up to the user to implement security enhancements such as HTTP body length limit, rate limit and back pressure.
Contributing
Sponsor
If my open-source work has been helpful to you, please sponsor me.
Every little bit helps. Thank you!
Dependencies
~9–17MB
~226K SLoC