

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

# 在适用于 Rust 的 AWS SDK 中覆盖客户端的单个操作配置
<a name="peroperation"></a>

[创建服务客户端](config-code.md)后，配置将变为不可变并将应用于所有后续操作。虽然此时无法修改配置，但可以按操作对其进行覆盖。

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

以下示例展示了创建 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` 为单个操作添加拦截器的示例，请参阅[仅用于拦截特定操作的拦截器](interceptors.md#interceptors-registration-specific)。