rskit_storage_s3/lib.rs
1//! Amazon S3 and S3-compatible (MinIO, LocalStack) storage backend.
2//!
3//! Registers a [`rskit_storage::FileStore`] implementation for Amazon S3
4//! and any S3-compatible object store (MinIO, LocalStack, Ceph, etc.).
5//!
6//! # Features
7//!
8//! - **MinIO / S3-compatible**: `force_path_style`, custom endpoint, explicit credentials
9//! - **Standard FileStore trait**: drop-in replacement for any rskit-storage backend
10//!
11//! # Credential Resolution
12//!
13//! Credentials are resolved in this order:
14//! 1. Explicit `access_key_id` + `secret_access_key` from [`Config`]
15//! 2. `AWS_ACCESS_KEY_ID` + `AWS_SECRET_ACCESS_KEY` environment variables
16//!
17//! # Example
18//!
19//! ```rust,no_run
20//! use rskit_storage::StorageRegistry;
21//! use rskit_storage_s3::{Config, register};
22//!
23//! # async fn example() -> rskit_errors::AppResult<()> {
24//! let mut registry = StorageRegistry::new();
25//! register(&mut registry, Config {
26//! bucket: "my-assets".into(),
27//! region: Some("us-east-1".into()),
28//! endpoint: Some("http://localhost:9000".into()),
29//! force_path_style: true,
30//! access_key_id: Some("minioadmin".into()),
31//! secret_access_key: Some("minioadmin".into()),
32//! prefix: None,
33//! })?;
34//! # Ok(())
35//! # }
36//! ```
37
38#![warn(missing_docs)]
39
40mod store;
41
42pub use store::{Config, register};