mirror of
https://github.com/rustfs/rustfs.git
synced 2026-03-17 14:24:08 +00:00
RustFS S3 Common
rustfs-s3-common provides shared types, utilities, and definitions for S3-compatible operations within the RustFS
ecosystem. It serves as a foundational crate for handling S3 event notifications, metrics, and operation definitions.
Features
- Event Definitions: Comprehensive
EventNameenum covering standard AWS S3 event notifications (e.g.,s3:ObjectCreated:Put,s3:ObjectRemoved:Delete) and RustFS-specific extensions. - S3 Operations:
S3Operationenum defining supported S3 API actions, used for metrics tracking and audit logging. - Metrics Integration: Utilities for recording S3 operation metrics (
record_s3_op) using themetricscrate. - Type Mapping: robust mapping between
EventNameandS3Operationto bridge the gap between API calls and event notifications.
Usage
Add this crate to your Cargo.toml:
[dependencies]
rustfs-s3-common = { path = "../s3-common" }
Event Names and Operations
use rustfs_s3_common::{EventName, S3Operation};
// Parse an event string
let event = EventName::parse("s3:ObjectCreated:Put").unwrap();
assert_eq!(event, EventName::ObjectCreatedPut);
// Map event to S3 operation
let op = event.to_s3_operation();
assert_eq!(op, Some(S3Operation::PutObject));
// Get string representation
assert_eq!(S3Operation::PutObject.as_str(), "s3:PutObject");
Metrics
Initialize and record metrics for S3 operations:
use rustfs_s3_common::{init_s3_metrics, record_s3_op};
use rustfs_s3_common::S3Operation;
// Initialize metrics (call once)
init_s3_metrics();
// Record an operation
record_s3_op(S3Operation::GetObject, "my-bucket");
License
This project is licensed under the Apache-2.0 License.