在适用于 Rust 的 AWS SDK 中覆盖客户端的单个操作配置 - 适用于 Rust 的 AWS SDK

在适用于 Rust 的 AWS SDK 中覆盖客户端的单个操作配置

创建服务客户端后,配置将变为不可变并将应用于所有后续操作。虽然此时无法修改配置,但可以按操作对其进行覆盖。

每个操作生成器都有一种可用于创建 CustomizableOperationcustomize 方法,以便您可以覆盖现有配置的单个副本。原始客户端配置将保持不变。

以下示例展示了创建 Amazon S3 客户端的过程,该客户端调用两个操作,其中第二个操作被覆盖以发送到另一个 AWS 区域。Amazon S3 的所有对象调用都使用 us-east-1 区域,除非 API 调用被显式覆盖以使用修改后的 us-west-2

use aws_config::{BehaviorVersion, Region}; let config = aws_config::defaults(BehaviorVersion::latest()) .region("us-east-1") .load() .await; let s3 = aws_sdk_s3::Client::new(&config); // Request will be sent to "us-east-1" s3.list_buckets() .send() .await?; // Unset fields default to using the original config value let modified = aws_sdk_s3::Config::builder() .region(Region::from_static("us-west-2")); // Request will be sent to "us-west-2" s3.list_buckets() // Creates a CustomizableOperation .customize() .config_override(modified) .send() .await?;
注意

上述示例针对的是 Amazon S3,但是概念对所有操作都是一样的。某些操作可能在 CustomizeableOperation 方面有其他方法。

有关使用 customize 为单个操作添加拦截器的示例,请参阅仅用于拦截特定操作的拦截器