首页
/ AWS SDK Rust 2025-05-09 版本发布:测试工具升级与关键修复

AWS SDK Rust 2025-05-09 版本发布:测试工具升级与关键修复

2025-06-16 23:56:40作者:龚格成

项目简介

AWS SDK Rust 是亚马逊云服务(AWS)官方提供的 Rust 语言软件开发工具包,它允许开发者以类型安全且高效的方式与 AWS 云服务进行交互。该项目遵循 Rust 的现代编程范式,提供了异步支持、强类型检查和丰富的 API 功能,是 Rust 生态中访问 AWS 服务的事实标准。

版本亮点

测试工具正式发布

本次发布的重大改进是将实验性的 aws-smithy-mocks-experimental 模块正式升级为 aws-smithy-mocks。这个工具现在成为测试生成 SDK 客户端的推荐方案,它提供了强大的功能,特别适合以下场景:

  1. 复杂重试逻辑测试:新增的序列构建器 API 可以模拟服务端返回不同状态码的场景,验证客户端的重试行为是否符合预期
  2. 多步骤交互验证:支持定义一系列预期响应,按顺序返回给客户端
  3. 调用次数统计:可以精确统计每个模拟规则被调用的次数

示例代码展示了如何测试 S3 客户端在遇到 503 错误后的重试行为:

use aws_sdk_s3::operation::get_object::GetObjectOutput;
use aws_smithy_mocks::{mock, mock_client, RuleMode};

#[tokio::test]
async fn test_retry_behavior() {
    let retry_rule = mock!(aws_sdk_s3::Client::get_object)
        .sequence()
        .http_status(503, None)
        .times(2)
        .output(|| GetObjectOutput::builder()
            .body(ByteStream::from_static(b"success"))
            .build())
        .build();

    let s3 = mock_client!(
        aws_sdk_s3,
        RuleMode::Sequential,
        [&retry_rule],
        |client_builder| {
            client_builder.retry_config(RetryConfig::standard().with_max_attempts(3))
        }
    );

    let result = s3.get_object().bucket("test-bucket").key("test-key").send().await;
    assert_eq!(retry_rule.num_calls(), 3);
}

默认值序列化修复

本次版本修复了一个关于字段序列化的关键问题。当字段最初标记为 required 特性,后来改为使用 addedDefault 特性时,即使显式设置了字段值,如果该值与默认值相同,字段也不会被序列化。这个修复确保了:

  • 使用 addedDefault 特性的字段现在总是会被序列化
  • 保持了与 AWS 服务预期的数据格式一致性
  • 避免了因序列化不一致导致的潜在服务端解析错误

最低Rust版本(MSRV)更新

为了使用最新的语言特性和保证代码质量,项目将最低支持的 Rust 版本提升至 1.82.0。开发者需要确保他们的开发环境满足这一要求。

服务特性更新

多个AWS服务SDK在此版本中获得了新功能:

  1. CodePipeline:新增对Secrets Manager和明文环境变量类型的支持
  2. EC2:支持每个增强网络接口(ENI)配置多个队列
  3. Glue:SaaS ZETL集成的刷新间隔现在可配置(15分钟到6天)
  4. SSO Admin:更新了权限边界API的模式验证,并允许应用名称包含空格

开发者建议

对于正在使用或计划使用AWS SDK Rust的开发者,建议:

  1. 将测试代码迁移到新的aws-smithy-mocks框架,它提供了更强大和稳定的测试能力
  2. 检查项目中是否存在依赖默认值序列化的场景,确保升级后行为符合预期
  3. 更新Rust工具链至1.82.0或更高版本
  4. 评估新服务特性是否适用于现有项目

这个版本在测试工具和核心功能稳定性方面都有显著提升,是AWS SDK Rust成熟度演进的重要一步。测试工具的正式发布尤其值得关注,它为Rust开发者提供了更专业的AWS服务集成测试方案。

登录后查看全文
热门项目推荐

热门内容推荐

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
260
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
854
505
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
254
295
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
331
1.08 K
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
397
370
note-gennote-gen
一款跨平台的 Markdown AI 笔记软件,致力于使用 AI 建立记录和写作的桥梁。
TSX
83
4
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
kernelkernel
deepin linux kernel
C
21
5