

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

# プロビジョンドスループット例外エラー
<a name="kinesis-fis-provisioned-throughput"></a>

Kinesis ストリームに対するリクエストレートが 1 つ以上のシャードのスループット制限を超えた場合、プロビジョンドスループット超過例外エラー (HTTP 400) が発生します。各シャードには読み取りおよび書き込みの容量制限があり、その制限を超えるとこの例外が発生します。この例外が発生する主なシナリオには、データインジェストまたは消費の急増、処理中のデータ量に対して不十分なシャード容量、またはパーティションキーの不均等な分散などがあります。

**例外の処理に関する推奨事項**
+ 指数バックオフと再試行メカニズムを実装します。
+ スループットの増加に対応できるように、シャード数を増やします。
+ パーティションキーが適切に分散されていることを確認します。
+ ストリームメトリクスをモニタリングします。

さらに、Kinesis のオンデマンドキャパシティモードを使用すると、ワークロードが自動的に調整され、この例外の発生を最小限に抑えることができます。詳細については、「[What is AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)」を参照してください。

**注記**  
不適切な分散による問題は、オンデマンドモードの自動スケーリング機能の対象外です。

**基本的な実験を実行するには**

1. ベースラインメトリクスを使用する: テストを実施する前に、通常時のスループットパターンを記録します。

1. 実験を作成する: `aws:kinesis:inject-api-provisioned-throughput-exception` アクションを使用します。

1. 強度を設定する: まずはリクエストスロットリングを 25% に設定します。

1. レスポンスをモニタリングする: 指数バックオフを使用して再試行ロジックを検証します。

1. スケーリングを検証する: 自動スケーリングによってアクティベーションがトリガーされることを確認します。

1. アラームを確認する: `CloudWatch` アラームが想定どおりに動作していることを確認します。

アプリケーションは、適切なバックオフ戦略を実装し、`WriteProvisionedThroughputExceeded` メトリクスおよび `ReadProvisionedThroughputExceeded` メトリクスをモニタリングし、必要に応じてシャードスケーリングをトリガーする必要があります。

**アクションの詳細**
+ **リソースタイプ**: IAM ロール ARN
+ **ターゲットオペレーション**: `PutRecord`、`PutRecords`、`GetRecords`
+ ****エラーコード****: `ProvisionedThroughputExceededException` (HTTP 400)
+ ****説明****: リクエストレートがシャードの容量制限を超えるシナリオをシミュレートし、アプリケーションのスロットリングおよびスケーリング応答をテストします。

**パラメータ**
+ **IAM ロール ARN**: アプリケーションが Kinesis Data Streams オペレーションに使用するロール。
+ **オペレーション**: ターゲットオペレーション: `PutRecord`、`PutRecords`、`GetRecords`。
+ **リソースリスト**: 特定のストリーム名またはシャード識別子。
+ **期間**: 実験期間。1 分から 12 時間です。 AWS FIS API では、値は ISO 8601 形式の文字列です。例えば、PT1M は 1 分を表します。 AWS FIS コンソールで、秒数、分数、または時間数を入力します。
+ **強度: **スロットリングするリクエストの割合。

**必要なアクセス許可**
+ `kinesis:InjectApiError`

実験テンプレートの例

 次の例は、指定されたタグを持つ最大 5 つの Kinesis Data ストリームに対するプロビジョニングされたスループット例外を示しています。 は、ランダムに影響するストリーム AWS FIS を選択します。5 分後に障害が除去されます。

```
{
    "description": "Kinesis stream experiment",
    "targets": {
        "KinesisStreams-Target-1": {
            "resourceType": "aws:kinesis:stream",
            "resourceTags": {
                   "tag-key": "tag-value"
            },
            "selectionMode": "COUNT(5)"
        }
    },
    "actions": {
         "kinesis": {
              "actionId": "aws:kinesis:stream-provisioned-throughput-exception",
              "description": "my-stream",
              "parameters": {
                   "duration": "PT5M",
                   "percentage": "100",
                   "service": "kinesis"
              },
              "targets": {
                    "KinesisStreams": "KinesisStreams-Target-1"
              }
         }
   },
   "stopConditions": [
         {
              "source": "none"
         }
   ],
   "roleArn": "arn:aws:iam::111122223333:role/role-name",
   "tags": {},
   "experimentOptions": {
       "accountTargeting": "single-account",
       "emptyTargetResolutionMode": "fail"
   }    
}
```

実験ロールのアクセス許可の例

次のアクセス許可により、リクエストの 50% に影響する特定のストリームで `aws:kinesis:stream-provisioned-throughput-exception` および `aws:kinesis:stream-expired-iterator-exception` のアクションを実行できます。