这个项目能做什么

AWS SDK for JavaScript v3 是对版本 2 的重写,在保留与 Amazon Web Services 协作这一目标的同时,改变了打包方式和内部架构。它不再是一个庞大的 SDK,而是拆分为模块化包,每个服务对应一个独立的包,因此应用程序可以只导入自己使用的内容。它还增加了对 TypeScript 的原生支持以及新的中间件栈。 入门遵循熟悉的模式:创建一个 Node.js 项目,添加诸如 @aws-sdk/client-dynamodb 这样的服务包,然后实例化客户端并发送命令。README 同时展示了模块化风格(DynamoDBClient 加 ListTablesCommand 和 client.send)以及类似 v2 的非模块化风格(DynamoDB 加 client.listTables)。它指出,在使用 tree shaking 时,非模块化接口会增加打包体积。对于 React Native,它列出了随机值、URL 处理和 Web 流所需的 polyfill,并提到在 Metro 中启用 package exports 支持。 与 v2 相比的关键变化包括移除了全局 SDK 配置对象;现在配置会传递给每个客户端实例,不过仍然可以手动共享。请求生命周期处理从事件监听器改为中间件栈,其中每个中间件都会调用下一个中间件,并且可以通过名称、步骤和 override 选项添加。README 链接到 UPGRADING.md,以获取 API 变更的完整细分说明。 涵盖的高层概念包括裸客户端与命令,以及聚合客户端、生成代码布局、流、分页器和中止控制器。生成的服务客户端位于 /clients 下,并使用 smithy-typescript 生成;共享工具代码位于 /packages 下;诸如 lib-dynamodb 和 lib-storage 这样的更高层封装位于 /lib 下。流输出会获得诸如 transformToString 之类的 mixin 方法,这些方法只读取一次流,不能重复调用。分页器暴露诸如 paginateListTables 这样的异步生成器函数,可用于 for await...of。AbortController 接口允许中止请求。 README 还讨论了 Lambda 的使用,建议每个服务和区域在 handler 之外初始化一个 SDK 客户端,并在 handler 内部进行 API 调用,以避免签名时间偏移。它指向性能文档,并指出 Node 18 上冷启动行为有所改善。它解释了如何从源码安装:克隆、使用 yarn 构建、打包单个客户端,并安装生成的归档文件。反馈渠道包括 GitHub issues 和 Gitter 聊天,贡献在 Apache 2.0 许可证下被接受。文档还说明了发布节奏、Node.js 和 ECMAScript 支持策略、TypeScript 版本支持策略、模块化包的稳定性,以及诸如需要 AWS Common Runtime 的功能等已知问题。