メニュー
Amazon Simple Queue Service
開発者ガイド

Amazon Simple Queue Service とは

Amazon Simple Queue Service (Amazon SQS) は、アプリケーションまたはマイクロサービス間をメッセージが移動する間に、それらを保存するための、信頼性が高くスケーラブルなキューサービスを提供します。分散アプリケーションコンポーネント間でデータを移動するため、コンポーネントを非干渉化する際に役に立ちます。Amazon SQS は、デッドレターキューやポイズンピル管理など、使い慣れたミドルウェア構造を提供します。また、AWS SDK でサポートされている任意のプログラミング言語からアクセスできる汎用ウェブサービス API も提供します。Amazon SQS では、標準および FIFO キューの両方がサポートされています。

Amazon SQS の用途はどのようなものでしょうか。

一意のメッセージをそれぞれ 1 回だけ使用する必要がある場合、および以下のような場合に Amazon SQS を使用します。

  • アプリケーションのコンポーネントを非干渉化する – 作業項目のキューがあり、各項目が正常に完了したことを個別に追跡する場合。Amazon SQS では ACK/FAIL の結果が追跡されるため、アプリケーションで永続的なチェックポイントまたはカーソルを維持する必要がありません。可視性タイムアウトが設定されると、Amazon SQS は確認済みメッセージを削除し、失敗したメッセージを再配します。

  • 個別にメッセージ遅延を設定する – ジョブキューがあり、それぞれのジョブで遅延をスケジュールする必要がある場合。スタンダード キューを使用して、それぞれのメッセージに最大 15 分の遅延を設定できます。

  • 読み込み時の同時実行またはスループットを動的に増やす – 作業キューがあり、バックログがクリアされる前にコンシューマーを追加する場合。Amazon SQS では事前プロビジョニングは不要です。

  • 透過的にスケーリング – リクエストをバッファしており、たまに生じる負荷のスパイクやビジネスの自然増加の結果として負荷が変化する場合。Amazon SQS ではバッファされたリクエストを個別に処理できるため、Amazon SQS 透過的にスケールして、お客様からのプロビジョニング指示を必要とせずに負荷を処理できます。

どのようなキューが必要ですか。

スタンダード キュー FIFO キュー

すべての リージョンで使用できます。

高スループット – スタンダード キューは、API アクションあたり、ほぼ無制限の数の 1 秒あたりのトランザクション (TPS) をサポートできます。

少なくとも 1 回の配信 – メッセージが少なくとも 1 回配信されます。ただし、まれにメッセージの複数のコピーが配信されます。

ベストエフォート型の順序 – メッセージが、送信された順序とは異なる順序で配信されることがあります。

米国東部(バージニア北部)、米国東部 (オハイオ)、米国西部 (オレゴン)、および 欧州 (アイルランド) リージョンで使用できます。

先入れ先出し配信 – メッセージが送信され受信された順序が厳格に保持されます。

1 回だけの処理 – メッセージは 1 回のみ配信され、コンシューマーが処理して削除するまで使用可能な状態で残り続けます。このキューでは、重複は導入されていません。

スループット制限 – バッチ処理なしでは、FIFO キューは、1 秒あたり最大 300 件のメッセージ (1 秒あたり 300 件の送信、受信、または削除オペレーション) をサポートできます。 オペレーションあたり 10 件のメッセージという最大バッチ処理を利用すれば、FIFO キューは、1 秒あたり最大 3,000 件のメッセージをサポートできます。

スループットを重視する場合、アプリケーション間でデータを送信します。例:

  • 負荷の高いバックグラウンドの作業からライブユーザーリクエストを分離します: ユーザーはサイズ変更またはエンコード中にメディアをアップロードできます。

  • 複数のワーカーノードにタスクを割り当てます: 大量のクレジットカードの検証リクエストを処理します。

  • 今後の処理のためのバッチメッセージ: データベースに追加する複数のエントリをスケジュールします。

イベントの順序を重視する場合、アプリケーション間でデータを送信します。例:

  • ユーザーが入力したコマンドが正しい順序で実行されていることを確認します。

  • 価格の変更を正しい順序で送信して、正しい製品価格を表示します。

  • アカウントを登録する前に受講者がコースに登録できないようにします。

Amazon SQS の主な特徴は何ですか。

Amazon SQS は主に次の主要な機能を提供します。

  • 冗長なインフラストラクチャ – スタンダード キューは少なくとも 1 回のメッセージ配信をサポートしますが、FIFO キューは厳密に 1 回のメッセージ処理をサポートします。Amazon SQS では、メッセージへの高度な同時アクセス、およびメッセージの生成と消費の高可用性が保証されます。

  • 複数のプロデューサーとコンシューマー – システムの複数の部分で、メッセージの送受信を同時に行うことができます。Amazon SQS は処理している間メッセージをロックすることで、システムの別のパーツが同時にそのメッセージを処理することを回避します。

  • キューごとの設定 – キューをすべて同一にする必要はありません。たとえば、1 つのキューを、他のキューよりも長い処理時間が必要なメッセージに対して最適化できます。

  • さまざまなメッセージサイズ – メッセージのサイズは最大 262,144 バイト (256 KB) まで可能です。Amazon Simple Storage Service (Amazon S3) または Amazon DynamoDB を使用し、Amazon SQS で Amazon S3 オブジェクトへのポインターを保持して、より大きなメッセージの内容を保存します。詳細については、「Amazon S3 を使用した Amazon SQS メッセージの管理」を参照してください。大きなメッセージを小さなメッセージに分割することもできます。

  • アクセスコントロール – 誰がメッセージをキューに送信するか、またキューから誰がメッセージを受信するかを制御します。

  • 遅延キュー – キューにデフォルトの遅延を設定し、キューに入れられたすべてのメッセージの配信を、指定した期間延期することができます。遅延の値は CreateQueue でキューを作成するときに設定できます。また、SetQueueAttributes でその値を更新できます。値を更新した場合、その新しい値は、更新後にキューに入れられたメッセージにのみ反映されます。

  • PCI コンプライアンス – Amazon SQS は、マーチャントまたはサービスプロバイダーによるクレジットカードデータの処理、ストレージ、および伝送をサポートしており、Payment Card Industry (PCI) Data Security Standard (DSS) に準拠していることが確認されています。PCI DSS の詳細 (AWS PCI Compliance Package のコピーをリクエストする方法など) については、「PCI DSS レベル 1」を参照してください。

  • HIPAA コンプライアンス – AWS で HIPAA コンプライアンスプログラムが拡張され、HIPAA 対応サービスとして Amazon SQS が含まれるようになりました。AWS との事業提携契約 (BAA) をすでに行っている場合は、Amazon SQS を使用して HIPAA 準拠のアプリケーションを構築し、保護されるべき医療情報 (PHI) を含むメッセージなどのメッセージを保存したり転送することが可能になりました。詳細については、HIPAA への準拠を参照してください。

Amazon SQS の基本的なアーキテクチャは何ですか。

システム全体に 3 つの主な役割が存在します。

  • 分散システムのコンポーネント

  • キュー

  • キューにあるメッセージ

次の図には、キューにメッセージを送信し、キューからメッセージを受信する複数のコンポーネントがあります。この図は、メッセージ (A-E) が存在する 1 つのキューが、複数の Amazon SQS サーバーにまたがって冗長に保存されていることを示しています。