BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース AWSがついにRust、Kotlin、Swiftの公式SDKを導入

AWSがついにRust、Kotlin、Swiftの公式SDKを導入

原文(投稿日:2022/01/09)へのリンク

Re:inventでプレビューとなったRustKotlinSwift向けの新たなAWS SDKでは、AWS APIの固有のラッパーが提供される。これにより、開発者がより使い慣れた一貫した方法でAWSサービスを操作できるようになる。

Amazonによると、各SDKは、各言語に共通のベストプラクティスを取り入れ、高度な言語構文を活用している。たとえば、Rust SDKでは、非同期/待機、ノンブロッキングIO、ビルダーなどの最近の機能が使用される。同じように、Swift SDKではSwift 5.5の同時実行機能が使用され、マルチプラットフォームがサポートされる。さらに、Rust SDKは高速シリアライザーとデシリアライザーによって、不要なコピーと割り当てを最小限に抑え、CPUとメモリの使用率を削減する。

各SDKは、個別のパッケージ群を通してほとんどのAWS APIをサポートする。サービスごとに1セットであり、その正確な数は、SDKごとにわずかに異なる。Amazon S3、Amazon EC2、DynamoDBなど数百ある、すべての主要なAPIが含まれる。この粒度のため、開発者は実際に必要なライブラリのみを使用でき、ビルドのサイズと時間を削減できる。

これは、Rustとその新たなAWS SDKを使って、すべてのDynamoDBテーブルを一覧表示する方法である。

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(())
}

次のスニペットのように、同じタスクをSwiftで実行できる。

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)
        }
    }
}

AWS公式のSDK for Rustの前は、Rust開発者は、RusotoのおかげでネイティブSDKを使用してAWSサービスにアクセスできた。Rusotoは最近メンテナンスモードに入っている。

Rust、Kotlin、Swiftは、JavaScript、Python、PHP、.NET (C#)、Ruby、Java、Go、Node.js、C++などサポートされている長い言語リストへの直近の追加にすぎない。すべての新しいSDKはまだ開発者向けプレビューであるため、開発者のフィードバックに基づいて、一般向け提供に至る前にAPIが変更される可能性がある。

作者について

この記事に星をつける

おすすめ度
スタイル

BT