Skip to main content

Crate cbilling

Crate cbilling 

Source
Expand description

§Cloud Billing SDK

A comprehensive Rust library for managing multi-cloud billing and account management.

§Supported Cloud Providers

Each provider is behind a feature flag for modular compilation:

  • Aliyun (Alibaba Cloud) - feature: aliyun - Full support
  • Tencent Cloud - feature: tencentcloud - Full support
  • AWS - feature: aws - Full support via Cost Explorer API
  • Volcengine (火山云) - feature: volcengine - Full support
  • UCloud - feature: ucloud - Partial support
  • Azure - feature: azure - Planned

§Feature Flags

§Cloud Providers (modular)

  • aliyun - Alibaba Cloud billing support
  • tencentcloud - Tencent Cloud billing support
  • aws - AWS Cost Explorer support
  • volcengine - Volcengine billing support
  • ucloud - UCloud billing support
  • all-providers - Enable all cloud providers

§Database Support (optional)

  • db-postgres - PostgreSQL database support
  • db-sqlite - SQLite database support

§Convenience Features

  • full - All providers + PostgreSQL
  • full-sqlite - All providers + SQLite

§Default Features

By default, all cloud providers are enabled but no database backend.

§Core Features

  • 🔄 Direct cloud provider API integration
  • 👥 Multi-account support per provider
  • 📊 Bill aggregation and analysis
  • 📈 Cost trending and comparison
  • 💾 Optional database persistence (PostgreSQL or SQLite)
  • 🔍 Query billing data by cycle, provider, and account

§Quick Start

§Basic Usage (without database)

[dependencies]
cbilling = { version = "0.1", features = ["aliyun"] }
use cbilling::providers::aliyun::AliyunBillingClient;
use cbilling::error::Result;

#[tokio::main]
async fn main() -> Result<()> {
    // Create Aliyun billing client
    let client = AliyunBillingClient::new(
        "your_access_key_id".to_string(),
        "your_access_key_secret".to_string(),
    );

    // Query billing data for a specific month
    let billing_cycle = "2025-03";
    let response = client.query_instance_bill(billing_cycle, None, None, None).await?;
     
    println!("Billing data: {:?}", response);
    Ok(())
}

§With Database Support

[dependencies]
# PostgreSQL
cbilling = { version = "0.1", features = ["aliyun", "db-postgres"] }
# Or SQLite
cbilling = { version = "0.1", features = ["aliyun", "db-sqlite"] }
# Or all providers with PostgreSQL
cbilling = { version = "0.1", features = ["full"] }

Re-exports§

pub use error::BillingError;
pub use error::Result;
pub use models::Account;
pub use models::Bill;
pub use models::Provider;
pub use models::ProviderConfig;

Modules§

error
Error types for cloud billing operations
models
Data models for multi-cloud billing management
providers
Cloud Provider Integration
service
Cloud Billing Service

Constants§

VERSION
Library version

Functions§

init
Initialize the billing library