プロビジョンドスループット例外エラー - Amazon Kinesis Data Streams

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

プロビジョンドスループット例外エラー

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

例外の処理に関する推奨事項
  • 指数バックオフと再試行メカニズムを実装します。

  • スループットの増加に対応できるように、シャード数を増やします。

  • パーティションキーが適切に分散されていることを確認します。

  • ストリームメトリクスをモニタリングします。

さらに、Kinesis のオンデマンドキャパシティモードを使用すると、ワークロードが自動的に調整され、この例外の発生を最小限に抑えることができます。詳細については、「What is AWS Fault Injection Service?」を参照してください。

注記

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

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

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

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

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

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

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

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

アクションの詳細
  • リソースタイプ: IAM ロール ARN

  • ターゲットオペレーション: PutRecordPutRecordsGetRecords

  • エラーコード: ProvisionedThroughputExceededException (HTTP 400)

  • 説明: リクエストレートがシャードの容量制限を超えるシナリオをシミュレートし、アプリケーションのスロットリングおよびスケーリング応答をテストします。

パラメータ
  • IAM ロール ARN: アプリケーションが Kinesis Data Streams オペレーションに使用するロール。

  • オペレーション: ターゲットオペレーション: PutRecordPutRecordsGetRecords

  • リソースリスト: 特定のストリーム名またはシャード識別子。

  • 期間: 実験期間。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 のアクションを実行できます。