Crates.io | ds-common-aws-rs-lib |
lib.rs | ds-common-aws-rs-lib |
version | 0.1.0 |
created_at | 2025-09-24 18:58:28.814039+00 |
updated_at | 2025-09-24 18:58:28.814039+00 |
description | A comprehensive Rust library for AWS services integration, providing high-level abstractions for AWS SDK operations with common utilities and error handling |
homepage | |
repository | https://github.com/grasp-labs/ds-common-aws-rs-lib |
max_upload_size | |
id | 1853611 |
size | 124,507 |
A comprehensive Rust library for AWS services integration, providing high-level abstractions for AWS SDK operations with common utilities and error handling.
This crate supports the following features:
ssm
- AWS Systems Manager Parameter Store support (enabled by default)sqs
- AWS Simple Queue Service supportfull
- Enables all features (equivalent to ssm
+ sqs
)[dependencies]
ds-common-aws-rs-lib = "0.1.0"
Or use cargo add:
cargo add ds-common-aws-rs-lib
use aws_sdk_ssm::types::ParameterType;
use ds_common_aws_rs_lib::client::AwsClient;
use ds_common_aws_rs_lib::error::{Result, Error};
#[tokio::main]
async fn main() -> Result<(), Error> {
// Create AWS service once with shared configuration
let aws = AwsClient::new().await?;
// Get specialized services (very fast, no network calls)
let ssm = aws.ssm();
let sqs = aws.sqs();
// Use services with shared client
let parameter = ssm.get_parameter("/myapp/database/url").await?;
let queue_url = sqs.get_queue("my-queue").await?;
sqs.send_message(&queue_url, "Hello, world!", None).await?;
ssm.put_parameter("/myapp/database/url", "my-database-url", ParameterType::String, true).await?;
Ok(())
}
use ds_common_aws_rs_lib::client::AwsClient;
use aws_sdk_ssm::types::ParameterType;
use ds_common_aws_rs_lib::error::{Result, Error};
// Get a parameter
let aws = AwsClient::new().await?;
let ssm = aws.ssm();
let value = ssm.get_parameter("/myapp/database/url").await?;
// Put a parameter
ssm.put_parameter(
"/myapp/database/url",
"postgresql://localhost:5432/mydb",
ParameterType::String,
true
).await?;
use ds_common_aws_rs_lib::client::AwsClient;
use ds_common_aws_rs_lib::sqs::SqsService;
use ds_common_aws_rs_lib::error::{Result, Error};
// Get queue URL
let aws = AwsClient::new().await?;
let sqs = aws.sqs();
let queue_url = sqs.get_queue("my-queue").await?;
// Send message with no delay
sqs.send_message(&queue_url, "Hello, world!", None).await?;
// Send message with 10 second delay
sqs.send_message(&queue_url, "Delayed message", Some(10)).await?;
The library provides unified error handling across all modules:
use ds_common_aws_rs_lib::error::{Result, Error};
use ds_common_aws_rs_lib::client::AwsClient;
// All functions return Result<T, Error>
async fn example() -> Result<(), Error> {
// SSM errors are automatically converted to Error::Ssm
let aws = AwsClient::new().await?;
let ssm = aws.ssm();
let sqs = aws.sqs();
let param = ssm.get_parameter("/myapp/config").await?;
let queue_url = sqs.get_queue("my-queue").await?;
Ok(())
}
This project is licensed under either of
at your option.