

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS SDK for Rust でのタイムアウトの設定
<a name="timeouts"></a>

 AWS SDK for Rust には、 AWS のサービス リクエストのタイムアウトと停止したデータストリームを管理するためのいくつかの設定が用意されています。これらは、ネットワークで予期しない遅延や障害が発生した場合に、アプリケーションが最適に動作するのに役立ちます。

## API タイムアウト
<a name="api-timeouts"></a>

一時的な問題により、リクエストの試行に時間がかかる、または完全に失敗する可能性がある場合、アプリケーションがフェイルファストによって最適に動作できるように、タイムアウトを確認して設定することが重要です。失敗したリクエストは、SDK によって自動的に再試行できます。個々の試行とリクエスト全体の両方にタイムアウトを設定するのがグッドプラクティスです。

SDK for Rust は、リクエストの接続を確立するためにデフォルトでタイムアウトが設定されています。SDK には、リクエストの試行やリクエスト全体のレスポンスを受信するための最大待機時間は、デフォルトでは設定されていません。利用可能なタイムアウトオプションは以下のとおりです。


| パラメータ | デフォルトの値 | 説明 | 
| --- | --- | --- | 
| 接続タイムアウト | 3.1 秒 | 接続を確立する前に待機する最大時間 (再試行を中止するまでの時間)。 | 
| オペレーションタイムアウト | なし | SDK for Rust からレスポンスを受信するまでの最大待機時間で、すべての再試行が含まれます。 | 
| オペレーション試行タイムアウト | なし | 1 回の HTTP 試行にかかる最大待機時間で、この時間が経過すると API コールを再試行できます。 | 
| 読み取りタイムアウト | なし | リクエストが開始されてから、レスポンスの最初のバイトを読み取るまで待機する最大時間。 | 

次の例は、カスタムタイムアウト値を使用する Amazon S3 クライアントの設定を示しています。

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .timeout_config(
        TimeoutConfig::builder()
            .operation_timeout(Duration::from_secs(5))
            .operation_attempt_timeout(Duration::from_millis(1500))
            .build()
    )
    .load()
    .await;

let s3 = aws_sdk_s3::Client::new(&config);
```

オペレーションタイムアウトと試行タイプアウトを一緒に使用すると、すべての再試行に費やされる合計時間にハードリミットを設定します。また、低速なリクエストに対して、フェイルファストするよう、個々の HTTP リクエストを設定することもできます。

すべてのオペレーションに対してサービスクライアントでこれらのタイムアウト値を設定する代わりに、[1 つのリクエストに対して設定またはオーバーライドできます](peroperation.md)。

**重要**  
オペレーションタイムアウトと試行タイムアウトは、SDK for Rust がレスポンスを返した後に消費されるストリーミングデータには適用されません。例えば、レスポンスの `ByteStream` メンバーからデータを消費しても、オペレーションタイムアウトの対象にはなりません。

## ストリーム保護の停止
<a name="stalled-stream-protection"></a>

SDK for Rust は、停止したストリームの検出に関連する別の形式のタイムアウトを利用できます。停止ストリームは、設定された猶予期間を超えてもデータを生成しないアップロードまたはダウンロードストリームです。これにより、アプリケーションが無期限に停止したまま進行しない状態を防止できます。

 ストリーム保護が停止すると、ストリームが許容期間を超えてアイドル状態になるとエラーを返します。

デフォルトでは、SDK for Rust はアップロードとダウンロードの両方でストリームの保護の停止を有効化し、20 秒という長めの猶予期間を設け、少なくとも 1 バイト/秒のアクティビティを検出します。

次の例は、アップロード保護を無効化し、アクティビティがない状態の猶予期間を 10 秒に変更するカスタマイズされた `StalledStreamProtectionConfig` を示しています。

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .stalled_stream_protection(
        StalledStreamProtectionConfig::enabled()
            .upload_enabled(false)
            .grace_period(Duration::from_secs(10))
            .build()
    )
    .load()
    .await;
```

**警告**  
ストリーム保護の停止は、高度な設定オプションです。これらの値は、アプリケーションのパフォーマンスの強化が必要な場合や、他の問題を引き起こしている場合にのみ変更することをお勧めします。

### 停止したストリーム保護を無効にする
<a name="disable-stalled-stream-protection"></a>

次の例は、停止したストリーム保護を完全に無効化する方法を示しています。

```
let config = aws_config::defaults(BehaviorVersion::latest())
    .stalled_stream_protection(StalledStreamProtectionConfig::disabled())
    .load()
    .await;
```