# oximedia-cloud

Multi-cloud storage and media services integration for OxiMedia, supporting AWS, Azure, and Google Cloud Platform.
Part of the [oximedia](https://github.com/cool-japan/oximedia) workspace — a comprehensive pure-Rust media processing framework.
## Features
- **Multi-cloud Storage Abstraction** — Unified API for AWS S3, Azure Blob, and Google Cloud Storage
- **AWS Integration** — S3, MediaConvert, MediaLive, MediaPackage, CloudWatch, KMS (aws-sdk-*)
- **Azure Integration** — Azure Blob Storage and Azure Media Services (azure_storage_blobs, azure_identity)
- **GCP Integration** — Google Cloud Storage and GCP Media Services (REST API via reqwest)
- **Transfer Management** — Retry, resume, multipart upload, bandwidth throttling
- **Cost Optimization** — Storage tier management, cost estimation, egress policy
- **Security and Encryption** — KMS integration, server-side encryption, HMAC signing
- **CDN Integration** — CDN configuration and edge delivery
- **Multi-region** — Region selection and replication policies
- **Cloud Backup** — Incremental, differential, and versioned backups
- **Object Lifecycle** — Tier transitions, expiration, and archival rules
- **Cloud Transcoding** — Cloud-based transcoding pipeline integration
- **Event Bridge** — Event-driven automation
## Usage
Add to your `Cargo.toml`:
```toml
[dependencies]
oximedia-cloud = "0.1.1"
```
```rust
use oximedia_cloud::{CloudProvider, CloudStorage, create_storage};
use bytes::Bytes;
async fn example() -> Result<(), Box<dyn std::error::Error>> {
let provider = CloudProvider::S3 {
bucket: "my-bucket".to_string(),
region: "us-east-1".to_string(),
};
let storage = create_storage(provider).await?;
storage.upload("test.mp4", Bytes::from("data")).await?;
Ok(())
}
```
## API Overview (46 source files, 701 public items)
**Core types:**
- `create_storage()` — Factory function for cloud storage backends
- `CloudProvider` — AWS S3, Azure Blob, GCS provider enum
- `CloudStorage` (trait) — Unified storage interface
- `ObjectInfo`, `ObjectMetadata` — Object information
- `StorageClass`, `TransferProgress`, `UploadOptions` — Transfer types
- `CostEstimator`, `StorageTier` — Cost management
- `Credentials`, `EncryptionConfig`, `KmsConfig` — Security types
**Backend modules:**
- `aws` — AWS S3, MediaConvert, MediaLive, MediaPackage, CloudWatch, KMS
- `azure` — Azure Blob Storage and Azure Media Services
- `gcp` — Google Cloud Storage and GCP Media Services
- `generic` — Generic storage provider abstraction
**Feature modules:**
- `transfer`, `upload_manager` — Transfer management and multipart uploads
- `cdn`, `cdn_config` — CDN configuration and edge delivery
- `cost`, `cost_model`, `cost_monitor` — Cost optimization and monitoring
- `security` — Encryption, credentials, and KMS integration
- `multicloud`, `multiregion` — Multi-cloud and multi-region strategies
- `cloud_backup` — Backup strategies (incremental, differential, versioned)
- `transcoding`, `transcoding_pipeline` — Cloud transcoding integration
## License
Apache-2.0 — Copyright 2024-2026 COOLJAPAN OU (Team Kitasan)