使用适用于 Rust 的 AWS SDK 发出 AWS 服务请求 - 适用于 Rust 的 AWS SDK

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用适用于 Rust 的 AWS SDK 发出 AWS 服务请求

要以编程方式访问 AWS 服务,适用于 Rust 的 AWS SDK 对每个 AWS 服务使用一个客户端结构体。例如,如果您的应用程序需要访问 Amazon EC2,则您的应用程序会创建一个 Amazon EC2 客户端结构体来与该服务交互。然后,您可以使用服务客户端向该 AWS 服务 发出请求。

要向 AWS 服务发出请求,您必须先创建和配置服务客户端。对于您的代码使用的每个 AWS 服务,它都有自己的 crate 和用于与之交互的专用类型。客户端为服务公开的每个 API 操作公开一种方法。

要在适用于 Rust 的 AWS SDK 中与 AWS 服务交互,请创建一个特定于服务的客户端,使用其 API 方法和流畅的生成器式串接,并调用 send() 以执行请求。

Client 为服务公开的每个 API 操作公开一种方法。这些方法的返回值都是“fluent builder”,通过生成器式函数调用串接为该 API 添加不同的输入。调用服务的方法后,调用 send() 以获取 Future,它将产生成功的输出或 SdkError。有关 SdkError 的更多信息,请参阅 处理适用于 Rust 的 AWS SDK 中的错误

以下示例展示了使用 Amazon S3 在 us-west-2 AWS 区域创建存储桶的基本操作:

let config = aws_config::defaults(BehaviorVersion::latest()) .load() .await; let s3 = aws_sdk_s3::Client::new(&config); let result = s3.create_bucket() // Set some of the inputs for the operation. .bucket("my-bucket") .create_bucket_configuration( CreateBucketConfiguration::builder() .location_constraint(aws_sdk_s3::types::BucketLocationConstraint::UsWest2) .build() ) // send() returns a Future that does nothing until awaited. .send() .await;

每个服务 crate 都有其他用于 API 输入的模块,例如:

  • types 模块具有结构体或枚举来提供更复杂的结构化信息。

  • primitives 模块具有更简单的类型来表示数据,例如日期时间或二进制 blob。

有关服务 crate 及 crate 组织的更详细信息,请参阅 API 参考文档。例如,Amazon Simple Storage Service 的 aws-sdk-s3 crate 具有多个模块。其中两个是: