AWS SDK for Kotlin 和 AWS SDK for Rust 上线!
编译 |梦依丹 翻译工具 | ChatGPT
出品 | CSDN(ID:CSDNnews)
11月 27 日和 28 日,亚马逊云科技官博分别推送了《Announcing general availability of the AWS SDK for Kotlin》和《Announcing general availability of the AWS SDK for Rust》两篇博文,宣布全面推出适用于 Kotlin 和 Rust 的 SDK。
作为两门年轻的编程语言,Kotlin 和 Rust 增势喜人,在最新发布的 TIOBE 11 月编程语言排行榜中,Kotlin 已跃居 15 位,Rust 成功进入 TOP 20 的位置。
亚马逊云科技推出全面支持 Kotlin 的 SDK
亚马逊云科技从头开始设计了 Kotlin SDK,为开发者提供符合 Kotlin 语言习惯的体验,包括领域特定语言(DSL)构建器和使用协程进行异步亚马逊云科技服务调用的支持。今天的发布使开发人员可以针对 JVM 平台或 Android API Level 24+ 进行开发,未来还将支持其它平台,比如 Kotlin/Native。
在本文中,我们将介绍SDK提供的关键功能,包括DSL构建器、协程支持、分页、等待器、可插拔的HTTP层等等。
详情可参考支持路线图:https://github.com/awslabs/aws-sdk-kotlin/projects/2
为何选择Kotlin?
亚马逊云科技为何会选择从头设计 Kotlin SDK 呢?毕竟,Kotlin 可以轻松创建混合代码库,并允许开发者从 Kotlin 调用 Java 代码。已经使用 Kotlin 开发的现有亚马逊云科技客户已经以这种方式使用了 AWS SDK for Java。然而,他们相信客户将从一个专门为 Kotlin 打造的 SDK 中受益。
首先,Kotlin 提供的不仅仅是 Java 的互操作性,还包括空安全、协程、扩展函数和智能转换等更多功能。他们希望提供一个充分发挥该语言优势、符合 Kotlin 开发者习惯的 SDK。
其次,自 2019 年以来,Android 移动开发一直以 Kotlin 为主导。开发者应该能够获得一个现代化的 SDK,支持所有亚马逊云科技服务。这就是为什么 AWS SDK for Kotlin 将 Android API 24+ 作为一流目标支持的原因。实际上,AWS Amplify for Android v2 是基于 AWS SDK for Kotlin 构建的。
最后,Kotlin 并不仅限于 JVM 平台。Kotlin 多平台使开发者能够编写针对JVM、本地二进制文件(Linux、Windows、macOS和iOS)、JavaScript 和 WASM 的 Kotlin 代码。该 SDK 从一开始就作为一个多平台库开发,并且他们计划在将来支持其他目标平台。
惯用的 Kotlin
AWS SDK for Kotlin 提供了遵循类型安全构建器模式的 DSL,用于创建请求。
下面的示例展示了如何使用该 SDK 创建一个 Amazon DynamoDB 表:
DynamoDbClient.fromEnvironment().use { ddb ->
ddb.createTable {
tableName = "movies"
attributeDefinitions = listOf(
AttributeDefinition {
attributeName = "year"
attributeType = ScalarAttributeType.N
},
AttributeDefinition {
attributeName = "title"
attributeType = ScalarAttributeType.S
}
)
keySchema = listOf(
KeySchemaElement {
attributeName = "year"
keyType = KeyType.Hash
},
KeySchemaElement {
attributeName = "title"
keyType = KeyType.Range
}
)
provisionedThroughput {
readCapacityUnits = 10
writeCapacityUnits = 10
}
}
}
有关 AWS SDK for Kotlin 的详细介绍,可以参考亚马逊云科技官网:https://aws.amazon.com/cn/blogs/developer/aws-sdk-for-kotlin-ga/
亚马逊云科技推出全面支持 Rust 的 SDK
除了 Kotlin,亚马逊云科技还推出了AWS SDK for Rust。
官博写道:
该 SDK 提供了符合惯用方式、类型安全的 API,同时充分发挥了 Rust 语言的性能、可靠性和生产力等优势。
该 SDK 支持现代化的 Rust 语言特性,如异步/等待、非阻塞 IO 和构建器。它提供对 300 多个亚马逊云科技服务的访问,每个服务都有自己的 crate。
该 SDK 默认使用合理的默认设置,但也可通过扩展进行个性化定制,以适应用户的特定用例。
该 SDK 还具有模块化的特性,允许用户仅为所使用的服务编译 crate。此外,该 SDK 还经过优化,具有快速高效的特性。
使用 Rust SDK,用户可以快速地在 Amazon Simple Storage Service(Amazon S3)、Amazon Elastic Compute Cloud(Amazon EC2)和 Amazon DynamoDB 之间传输数据。
使用 AWS SDK for Rust 入门
开发者可以通过 crates.io 访问该 SDK。下面这个例子演示了如何使用 AWS SDK for Rust 与 DynamoDB 一起执行列出表的常见操作。此示例假设你已经安装了Rust和Cargo(如果尚未安装,可以按照这些说明安装Rust和Cargo)。
创建一个新的 Rust 项目 cargo:
cd <your-project-directory>
cargo new <name-of-your-new-rust-project>
如果你是首次使用 AWS SDK,请设置亚马逊云科技服务的凭证,官方建议使用短期凭证进行身份验证。
将 SDK crate 添加到依赖项,你已经创建了新的 Rust 项目,接下来将添加一些 SDK crate 和异步运行时。在你的新项目文件的[dependencies]下面添加以下行:Cargo.toml
[dependencies]
aws-config = { version = "1", features = ["behavior-version-latest"] }
aws-sdk-dynamodb = "1"
tokio = { version = "1", features = ["full"] }
以下是每个 crate 的功能说明:
aws-config:虽然不是必需的,但该 crate 使得创建 DynamoDB 客户端所需的配置变得容易。它将处理亚马逊云科技云服务凭证的获取,并提供有用的默认值;
aws-sdk-dynamodb:该 crate 提供了与用户希望交互的服务的客户端;
tokio:AWS SDK for Rust 实现异步 API 功能,官方推荐使用 Tokio 运行时,它在该 SDK 中得到了良好的支持。
使用 Rust SDK 列出 DynamoDB 表:
现在可以编写 主函数 main:
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let sdk_config = aws_config::load_from_env().await;
let client = aws_sdk_dynamodb::Client::new(&sdk_config);
let res = client
.list_tables()
.limit(10)
.send()
.await?;
println!("Current DynamoDB tables: {:?}", res.table_names());
Ok(())
}
运行 cargo:
cargo run
有关 AWS SDK for Rust 的详细介绍,可访问:https://aws.amazon.com/cn/blogs/developer/announcing-general-availability-of-the-aws-sdk-for-rust/
相关链接:
https://github.com/awslabs/aws-sdk-kotlin
https://aws.amazon.com/cn/sdk-for-rust/
推荐阅读:
▶只让 ChatGPT 永远重复输出一个词,它就能告诉你很多秘密数据?!
▶小米公司:关于雷军“冰冷的 40 亿”纯属子虚乌有;谷歌 CEO 推迟 Gemini 模型发布;腾讯视频回应会员崩了|极客头条