An open API service indexing awesome lists of open source software.

https://github.com/lvillis/aliyun-sdk-rust

📦 Aliyun API SDK written in Rust
https://github.com/lvillis/aliyun-sdk-rust

Last synced: 3 months ago
JSON representation

📦 Aliyun API SDK written in Rust

Awesome Lists containing this project

README

        

Table of Contents↗️

aliyun-sdk-rust

📦 Aliyun API SDK written in Rust



crates.io version


crates.io version


build status


say thanks

---

This project is an Aliyun API SDK written in Rust, designed to help developers integrate Aliyun Cloud services easily. The SDK leverages asynchronous programming (via Tokio) and encapsulates functionalities such as request signing (HMAC-SHA1), unified request handling, and modular service interfaces (e.g., ECS, Billing).

## Features

- **Asynchronous Support**: Built on Tokio for high concurrency.
- **Request Signing**: Implements Aliyun's API signature mechanism using HMAC-SHA1.
- **Modular Design**: The project is organized into multiple modules (e.g., ECS, Billing) with clear separation of concerns.
- **Detailed Documentation**: Each interface is documented with detailed input/output parameter tables.
- **Comprehensive Testing**: Each service interface includes test cases to ensure correct functionality.

## Implemented Interfaces

- **ECS Module**
- [x] DescribeRegions
- [x] DescribeZones
- [x] DescribeAvailableResource
- [x] DescribeAccountAttributes
- [x] DescribeResourcesModification
- [x] DescribeRecommendInstanceType
- [x] RunInstances
- [x] StartInstances
- [x] StopInstances
- [x] RebootInstance
- [x] DeleteInstance
- [x] DescribeInstanceStatus
- [x] DescribeInstances

- **Billing Module**
- [x] QueryAccountBalance

## Usage

Add this crate to your `Cargo.toml`:

```toml
[dependencies]
alibabacloud = "0.1.0"
```

Then import and use the interfaces:

```rust
use alibabacloud::client::AliyunClient;
use alibabacloud::services::ecs::*;

#[tokio::main]
async fn main() {
let client = AliyunClient::new("YourAccessKeyId".into(), "YourAccessKeySecret".into());
// Query available regions
let regions = describe_regions(&client, None).await.unwrap();
println!("Available regions: {:?}", regions);
}
```