#dynamo-db #aws-sdk #serde #rusoto #aws-lambda #serde-dynamodb

serde_dynamo

serde serializer/deserializer for DynamoDB items that supports aws-sdk-dynamodb, aws_lambda_events, and rusoto_dynamodb

41 stable releases (3 major)

4.2.14 Apr 1, 2024
4.2.13 Nov 27, 2023
4.2.7 Oct 10, 2023
4.2.3 May 24, 2023
1.0.0 Dec 21, 2020

#1 in #rusoto

Download history 22412/week @ 2024-03-04 23039/week @ 2024-03-11 21955/week @ 2024-03-18 17548/week @ 2024-03-25 20762/week @ 2024-04-01 20923/week @ 2024-04-08 21752/week @ 2024-04-15 20293/week @ 2024-04-22 17889/week @ 2024-04-29 16578/week @ 2024-05-06 16931/week @ 2024-05-13 19278/week @ 2024-05-20 18528/week @ 2024-05-27 19239/week @ 2024-06-03 19727/week @ 2024-06-10 18079/week @ 2024-06-17

76,040 downloads per month
Used in 8 crates (6 directly)

MIT license

290KB
5.5K SLoC

DynamoDB is an AWS database that stores key/value and document data.

serde_dynamo provides a way to serialize and deserialize between data stored in these items and strongly-typed Rust data structures.

You may be looking for

Features

Support for aws-sdk-dynamodb, aws_lambda_events, and rusoto_dynamodb is provided via features. See the docs for more details.

Examples

See the docs for more examples.

Parsing items as strongly-typed data structures.

Items received from a aws-sdk-dynamodb call can be run through from_items.

#[derive(Serialize, Deserialize)]
pub struct User {
    id: String,
    name: String,
    age: u8,
};

// Get documents from DynamoDB
let result = client.scan().table_name("user").send().await?;

// And deserialize them as strongly-typed data structures
if let Some(items) = result.items {
    let users: Vec<User> = from_items(items)?;
    println!("Got {} users", users.len());
}

Alternatively, to deserialize one item at a time, from_item can be used.

for item in result.items.unwrap() {
    let user: User = from_item(item)?;
    println!("{} is {}", user.name, user.age);
}

Creating items by serializing data structures

Writing an entire data structure to DynamoDB typically involves using to_item to serialize it.

#[derive(Serialize, Deserialize)]
pub struct User {
    id: String,
    name: String,
    age: u8,
};

// Create a user
let user = User {
    id: "fSsgVtal8TpP".to_string(),
    name: "Arthur Dent".to_string(),
    age: 42,
};

// Turn it into an item that aws-sdk-dynamodb understands
let item = to_item(user)?;

// And write it!
client.put_item().table_name("users").set_item(Some(item)).send().await?;

Dependencies

~0.3–16MB
~203K SLoC