AWS finalmente obtiene SDK oficiales para Rust, Kotlin y Swift

Con una vista previa en Re:invent, los nuevos SDK de AWS para Rust , Kotlin y Swift brindan envolturas idiomáticas alrededor de las API de AWS que permitirán a los desarrolladores interactuar con los servicios de AWS de una manera más familiar y consistente.

Según Amazon, cada SDK aprovecha las mejores prácticas comunes para cada idioma y aprovecha la sintaxis avanzada del idioma. Por ejemplo, Rust SDK usa características recientes como async/await, IO sin bloqueo y constructores. De manera similar, el SDK de Swift utiliza las funciones de concurrencia de Swift 5.5 y brinda soporte multiplataforma. Además, Rust SDK se basa en serializadores y deserializadores rápidos para minimizar copias y asignaciones innecesarias y reducir la utilización de CPU y memoria.

Cada SDK es compatible con la mayoría de las API de AWS a través de distintos paquetes, uno para cada servicio, y el número exacto varía ligeramente con cada SDK. Se incluyen todas las principales API, como Amazon S3, Amazon EC2, DynamoDB y cientos más. Tal granularidad permite a los desarrolladores usar solo las bibliotecas que realmente necesitan, lo que reduce el tiempo y el tamaño de la compilación.

Así es como puede enumerar todas las tablas de DynamoDB usando Rust y su nuevo SDK de AWS :


async fn list_tables(client: &Client) -> Result<(), Error> {
    let resp = client.list_tables().send().await?;
    println!("Tables:");
    let names = resp.table_names().unwrap_or_default();
    let len = names.len();
    for name in names {
        println!("  {}", name);
    }
    println!("Found {} tables", len);
    Ok(())
}

La misma tarea se puede realizar en Swift como en el siguiente fragmento:


func listAllTables(ddb: DynamoDbClient) {
    ddb.listTables(input: ListTablesInput()) { result in
        switch(result) {
        case .success(let response):
            guard let namesOfTables = response.tableNames else {
                return
            }
            for currName in namesOfTables {
                print("Table name is \(currName)")
            }
        case .failure(let err):
            print(err)
        }
    }
}

Antes del SDK oficial de AWS para Rust, los desarrolladores de Rust ya podían usar un SDK nativo para acceder a los servicios de AWS gracias a Rusoto , que recientemente entró en modo de mantenimiento.

Rust, Kotlin y Swift son solo las últimas incorporaciones a una larga lista de lenguajes admitidos, que incluye JavaScript, Python, PHP, .NET (C#), Ruby, Java, Go, Node.js y C++. Todos los nuevos SDK aún se encuentran en versión preliminar para desarrolladores, por lo que su API podría cambiar antes de alcanzar la disponibilidad general según los comentarios de los desarrolladores.