本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用适用于 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() 以获取 FutureSdkError。有关 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 参考文档aws-sdk-s3 crate 具有多个模块