Amazon SNS メッセージ配信の再試行 - Amazon Simple Notification Service

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

Amazon SNS メッセージ配信の再試行

Amazon SNS は、配信ポリシー各配信プロトコルに対して。配信ポリシーは、サーバー側のエラーが発生したとき (サブスクライブされたエンドポイントをホストするシステムが利用できなくなったとき) に Amazon SNS がメッセージの配信を再試行する方法を定義します。配信ポリシーを使い果たすと、Amazon SNS は配信の再試行を停止し、配信にデッドレターキューがアタッチされていない限り、メッセージを破棄します。詳細については、「Amazon SNS デッドレターキュー (DLQ)」を参照してください。

配信プロトコルとポリシー

注記
  • HTTP/S を除き、Amazon SNS で定義された配信ポリシーを変更することはできません。HTTP/S のみがカスタムポリシーをサポートしています。「HTTP/S 配信ポリシーの作成」を参照してください。

  • Amazon SNS は、配信の再試行にジッタリングを適用します。詳細については、「」を参照してください。指数バックオフとジッタの投稿AWSアーキテクチャブログ

エンドポイントタイプ 配信プロトコル 即時の再試行 (遅延なし) 段階 バックオフ前段階 バックオフ段階 バックオフ後段階 合計試行回数
AWS管理対象エンドポイント Amazon Kinesis Data Firehose 3 回、遅延なし 2 回、1 秒間隔で 10 回、エクスポネンシャルバックオフで 1 秒から 20 秒まで 100,000 回、20 秒間隔で 100,015 回、23 日間
AWS Lambda
Amazon SQS
カスタマー管理エンドポイント SMTP 0 回、遅延なし 2 回、10 秒間隔で 10 回、エクスポネンシャルバックオフで 10 秒から 600 秒まで (10 分) 38 回、600 秒 (10 分) 間隔で 50 回、6 時間以上
SMS
モバイルプッシュ

¹ Kinesis Data Firehose プロトコルのスロットリングエラーの場合、Amazon SNS はカスタマー管理エンドポイントと同じ配信ポリシーを使用します。

配信ポリシーの段階

次の図は、配信ポリシーの段階を示しています。

各配信ポリシーは、4 つの段階で構成されます。

  1. 即時の再試行段階 (遅延なし)— この段階は最初の配信の試行の直後に発生します。この段階では再試行間の遅延時間はありません。

  2. バックオフ前段階— このフェーズは、即時再試行フェーズに従います。Amazon SNS は、バックオフ関数を適用する前に、この段階を使用して一連の再試行を試みます。この段階では、再試行回数と再試行間の遅延量を指定します。

  3. バックオフ段階— この段階は、再試行バックオフ関数を使用して、再試行間の遅延を制御します。この段階では、最小遅延、最大遅延、および遅延が最小遅延から最大遅延までどれだけ速く増加するかを定義する再試行バックオフ関数を設定します。バックオフ関数は、数論的、指数、幾何学的、または一次です。

  4. バックオフ後段階— この段階はバックオフ段階の次になります。再試行回数とその間の遅延量を指定します。これが最終段階です。

HTTP/S 配信ポリシーの作成

配信ポリシーとその 4 つの段階を使用して、Amazon SNS が HTTP/S エンドポイントへのメッセージ配信を再試行する方法を定義できます。Amazon SNS では、HTTP サーバーの容量に基づいてポリシーをカスタマイズする場合など、HTTP エンドポイントのデフォルトの再試行ポリシーを上書きできます。

HTTP/S 配信ポリシーは、サブスクリプションレベルまたはトピックレベルで JSON オブジェクトとして設定できます。トピックレベルでポリシーを定義すると、そのトピックに関連付けられたすべての HTTP/S サブスクリプションに適用されます。

HTTP/S サーバーの容量に応じて配信ポリシーをカスタマイズする必要があります。ポリシーは、トピック属性またはサブスクリプション属性として設定できます。トピック内のすべての HTTP/S サブスクリプションが同じ HTTP/S サーバーをターゲットにする場合は、トピックのすべての HTTP/S サブスクリプションで有効になるように、配信ポリシーをトピック属性として設定することをお勧めします。それ以外の場合は、ポリシーがターゲットとする HTTP/S サーバーの容量に応じて、トピック内の HTTP/S サブスクリプションごとに配信ポリシーを作成する必要があります。

次の JSON オブジェクトは、失敗した HTTP/S 配信を再試行するように Amazon SNS に次のように指示する配信ポリシーを表します。

  1. 遅延なし段階ですぐに 3 回

  2. バックオフ前段階で 2 回 (1 秒間隔で)

  3. 10 回 (1 秒から 60 秒までのエクスポネンシャルバックオフで)

  4. バックオフ後段階で 35 回 (60 秒間隔で)

このサンプル配信ポリシーでは、Amazon SNS は合計 50 回試行してからメッセージを破棄します。配信ポリシーで指定された再試行が尽きた後もメッセージを保持するには、配信不能メッセージをデッドレターキュー (DLQ) に移動するようにサブスクリプションを構成します。詳細については、「Amazon SNS デッドレターキュー (DLQ)」を参照してください。

注記

また、この配信ポリシーでは、Amazon SNS に配信を毎秒 10 以下に抑えるよう、maxReceivesPerSecondプロパティ このセルフスロットリングレートでは、配信された(アウトバウンドトラフィック)よりも多くのメッセージ(インバウンドトラフィック)が公開される可能性があります。受信トラフィックが送信トラフィックよりも多い場合、サブスクリプションによって大きなメッセージバックログが蓄積され、メッセージ配信のレイテンシーが高くなる可能性があります。配信ポリシーでは、必ずmaxReceivesPerSecondワークロードに悪影響を与えません。

{ "healthyRetryPolicy": { "minDelayTarget": 1, "maxDelayTarget": 60, "numRetries": 50, "numNoDelayRetries": 3, "numMinDelayRetries": 2, "numMaxDelayRetries": 35, "backoffFunction": "exponential" }, "throttlePolicy": { "maxReceivesPerSecond": 10 } }

配信ポリシーは、再試行ポリシーとスロットルポリシーで構成されます。配信ポリシーには、合計で 8 つの属性があります。

ポリシー 説明 制約事項
minDelayTarget 再試行の最小遅延。

単位:

1 から最大遅延まで

デフォルト: 20

maxDelayTarget 再試行の最大遅延。

単位:

最小遅延から 3,600 まで

デフォルト: 20

numRetries 即時再試行、バックオフ前再試行、バックオフ再試行、ポストバックオフ再試行の合計数。 0~100

デフォルト: 3

numNoDelayRetries 即時に行う再試行の回数。再試行の間に遅延はありません。 0 以上

デフォルト: 0

numMinDelayRetries バックオフ前段階での再試行回数と、これらの間に指定された最小遅延時間。 0 以上

デフォルト: 0

numMaxDelayRetries バックオフ後段階での再試行回数と、その間の最大遅延。 0 以上

デフォルト: 0

backoffFunction 再試行間のバックオフのモデル。

次の 4 つのオプションのいずれか。

  • 数論的

  • 指数

  • 幾何学的

  • 一次

デフォルト: linear

maxReceivesPerSecond サブスクリプションごとの 1 秒あたりの配信の最大数。 1 以上

デフォルト: スロットリングなし

Amazon SNS は、次の式を使用して、バックオフ段階での再試行回数を計算します。

numRetries - numNoDelayRetries - numMinDelayRetries - numMaxDelayRetries

3 つのパラメータを使用して、バックオフ段階での再試行の頻度を制御できます。

  • minDelayTarget— バックオフ段階の最初の再試行に関連する遅延を定義します。

  • maxDelayTarget— バックオフ段階の最後の再試行に関連する遅延を定義します。

  • backoffFunction— バックオフ段階の最初の再試行と最後の再試行の間のすべての再試行に関連する遅延時間を計算するために Amazon SNS で使用されるアルゴリズムを定義します。4 つの再試行バックオフ関数の 1 つを使用できます。

次の図は、各バックオフ関数が、バックオフ段階での再試行に関連する遅延時間にどのように影響するかを示しています。再試行の合計回数を 10、最小遅延を 5 秒、最大遅延を 260 秒に設定した配信ポリシー。縦軸は、10 回ごとの再試行に関連する遅延時間を秒単位で表します。横軸は、最初の試行から 10 回目の試行までの再試行回数を表します。