【AWS】Amazon Simple Queue Service(SQS)について解説します。

最終更新日:2026年8月10日

この記事でわかること

メッセージキューイング(Message Queueing:MQ)という言葉をご存知でしょうか?
ある処理から別の処理を起動したい、でも毎回引数(メッセージ)が違い連続して別の処理へ指示が発生しても順番は守りたい、そもそも別システム内または別サーバーにある、といった場面がよくあります。テキストファイルに引数を書いてメッセージを渡してもよいのですが、その方法ではどこまで終わったか管理するのが難しい場合や、他のプログラムや悪意のある人が内容を書き換えてしまうことも考えられます。そんなときに使うのが、メッセージキューイングという方法です。AWSでは、メッセージキューイングが簡単に実装できるAmazon Simple Queue Services(Amazon SQS)というサービスがあります。ここではAmazon Simple Queue Servicesについて紹介します。

■前提知識

項目 AWS Microsoft Azure Google Cloud
世界シェア 約33%(首位) 約22% 約11%
強み サービス数・実績 Microsoft製品連携 データ分析・AI
無料枠 12ヶ月+常時無料 12ヶ月無料 常時無料枠あり
主な資格 CLF / SAA / SAP AZ-900 / AZ-104 ACE / PCA
【メッセージキューイング(Message Queueing:MQ)とは?】
メッセージキューイングとは、異なるソフトウェア間でデータを送受信する手法の一つで、直接データを渡すのではなく一旦第三者のソフトウェアに預けることで、送信側も受信側も好きなタイミングで送受信処理を行うことができるようにする方式のことを指します。

■Amazon Simple Queue Service(Amazon SQS)

Amazon SQSは、AWSが提供するMQサービスです。MQとしての最低限の機能はもちろん、AWSのサービスであるメリットを活かして、他のサービス(AWS CloudWatch等)や、AWS内のID体系との連携も可能です。また、AWSの提供するAWS SDKを利用してさらに便利に活用できます。
SQSでは、2種類のメッセージキュータイプを利用できます。標準キューでは、最大限のスループットが得られ、配信順序はベストエフォート型で配信は少なくとも 1 回行われます。SQS FIFO(First in First out)キューは、メッセージが送信される順序のとおりに1回のみ確実に処理されるように設計されています。

AWS SDK(Software Development Kit):AWSでアプリケーションを開発および管理するためのツール。C++、Go、Node.js、Ruby、JavaScript、.Net、Python、Java、PHPで対応可しており、これらを使ってコードレベルで試すことも可能。

【SQS処理の大まかな流れ】
1、通信内容をSQS側に送信し、キューとして保存
2、受信側がSQS側に通信内容を問合せ
3、キューにデータがあれば受信

【Amazon SQS概要】
・複数のキューに分散してメッセージを管理するのでFIFOは必ず成立するとは限らない
・一つのキューを複数サーバに冗長化して保持する
・キューにメッセージを入れるサービスをプロデューサ、キューからメッセージを取り出すサービスをコンシューマという
・プロセス間通信などの、スレッド間通信に使われるコンポーネントで制御やデータ伝達をするポーリング型キューサービス
・フルマネージド型で提供され、高可用性・高スケーラビリティ・高スループット・低コストを実現
・60秒から14日間までメッセージを保存することが可能で、1メッセージあたり最大1MiB(約1,048,576バイト)までのデータをキューに格納できる。

■キュータイプ

Amazon SQSでは、異なるアプリケーション要件にあわせて2つのキュータイプを提供しています。

【標準キュー】
・無制限のスループット
・配信順序は保証されない(ベストエフォート型)
・メッセージは最低1回配信する(複数回配信されることもある)

スループットが高くFIFOキューに比べて安価であるため、配信順序を気にする必要がないバッチ処理などに向いています。
乱れた順序で 1 回以上到着するメッセージをアプリケーションが処理できる限り、多くのシナリオで標準のメッセージキューを使用できます。例えば以下のような場合です。

・負荷の高いバックグラウンドの作業からライブユーザーリクエストを分離
 →ユーザーはサイズ変更中またはエンコード中にメディアをアップロードできます。
・複数のワーカーノードにタスクを割り当てる
 →クレジットカードの検証リクエストを大量に処理します。
・今後の処理のためのバッチメッセージ
 →データベースに追加する複数のエントリをスケジュールします。

【FIFO キュー】
・スループットは1秒あたり300件のメッセージ処理をサポート(バッチ処理を利用した場合は1秒あたり最大3,000件)
・配信順序は厳密に保証
・メッセージは必ず1回のみ配信

標準キューがベストエフォートとしている部分が全て解決されているため、オンラインショップやストリーミングなどの入力順や処理回数が重要な処理に向いています。
FIFO キューは、オペレーションやイベントの順序が重要である場合、または重複不可の場合などにアプリケーション間のメッセージングを強化します。例えば以下のような場合です。

・ユーザーが入力したコマンドが正しい順序で実行されていることを確認
・価格の変更を正しい順序で送信して、正しい製品価格を表示
・アカウントを登録する前に受講者がコースに登録できないよう処理

【要注意】FIFOキューのスループット上限とメッセージサイズ上限は拡張されています
以前のFIFOキューは、上限を超えるスループットが必要な場合にAWSへ上限緩和リクエストを申請する必要がありましたが、現在は「高スループットモード」を有効にするだけで、申請なしにリージョンに応じて数千TPS〜(バッチ利用時は最大70万メッセージ/秒相当)まで拡張できるようになっています。また、1メッセージあたりの最大サイズもかつての256KBから、現在は1MiB(約1,048,576バイト)まで拡大されています。いずれも仕様が改定される可能性があるため、実際の設計時は最新の数値をAWS公式ドキュメントでご確認ください。

■Amazon Simple Queue Serviceの利点

【管理オーバーヘッド排除】
可用性が高くスケーラブルなメッセージキューサービスを提供するために必要な、進行中のオペレーションと基盤インフラストラクチャがすべて管理されます。SQSは前払い料金、メッセージングソフトウェアの取得、インストール、設定が不要です。インフラストラクチャをサポートするための時間がかかる構築やメンテナンスが必要ありません。SQSを使用すれば、キューが動的に作成され自動的にスケールされるため、アプリケーションを迅速かつ効率的に構築し拡張できます。

【機密データの安全性】
サーバー側の暗号化(SSE)によって各メッセージの本文を暗号化できるため、アプリケーション間で機密データをやり取りできます。Amazon SQS SSEとAWS Key Management Service(KMS)の統合により、SQSメッセージを保護するキーと他のAWSリソースを保護するキーを集中管理できます。暗号化キーが使用されるたびにAWS KMSによってAWS CloudTrailに記録されるため、規則やコンプライアンスの要件を満たすのに役立ちます。

SSE:Server-Side Encryptionの略で、SQSでのサーバサイド暗号化。標準キュー、FIFOキューのどちらでも利用可能。
AWS Key Management Service(KMS):暗号化操作に使用されるキーを簡単に作成および管理できるマネージドサービス。
AWS CloudTrail:AWSアカウントのガバナンス、コンプライアンス、運用およびリスクの監査を行えるように支援するサービス。

【確実にメッセージを配信】
どんな量のデータでもあらゆるレベルのスループットで転送できます。転送時にメッセージが失われることもありません。SQSではアプリケーションコンポーネントが切り離されるため、実行や失敗は個別に行われ、システムの全体的な耐障害性が向上します。メッセージすべての複数のコピーが複数のアベイラビリティーゾーンで冗長的に保存されるため、必要な時にはいつでも使用できます。

【伸縮自在にコストを効率良くスケール】
AWSクラウドを活用して需要に基づいて動的にスケールできます。SQSはアプリケーションで伸縮自在にスケールされるため、容量計画や事前プロビジョニングについての調査などをする必要がありません。キューあたりのメッセージ数に制限はなく、標準キューではほぼ無制限のスループットが提供されます。使用量に基づいて課金されるため、自己管理型メッセージングミドルウェアを使用した “常時オン” モデルと比較すると、大幅な費用削減を実現できます。

■ AWS SQS各種プロパティ

【可視性タイムアウト(Default Visibility Timeout)】
SQSは自動でメッセージの削除を行わないのでコンシューマがSQSからメッセージを取得してもメッセージが消えることはありません。これはコンシューマがメッセージの取得に失敗した際に、再取得できるようにするためです。しかし、そのままだと同じメッセージを別のコンシューマが取得してしまう可能性があり、それを防ぐために可視性タイムアウトを設定します。設定された時間の間、他のコンシューマがそのメッセージを取得できなくするものです。デフォルトでは30秒になっており、これをメッセージの処理時間よりも長く設定しておくことで処理が完了してからSQSに残っているメッセージを削除できます。

【メッセージ保持期間(Message Retention Period)】
キューに登録されたメッセージは明示的に削除処理を行われない限りデフォルトで4日間保持します。この値は1分~14日間の間で設定可能です。

【配信遅延時間(Delivery Delay)】
遅延時間を設定すると、キューに登録されたメッセージは設定した時間の間コンシューマから読み込まれなくなります。デフォルトは0秒で、最大15分まで設定可能です。

【メッセージ待機時間(Recieve Message Wait Time)】
メッセージを取得を指定時間だけ待機します。例えば10秒で設定した場合は、コンシューマは一度メッセージの取得を行ってから10秒待機して再度メッセージを取得します。デフォルトは0秒で(ショートポーリング)、最大20秒まで設定可能です。この設定以外に、コンシューマがメッセージを取得する際にも待機時間を指定でき(wait_time_seconds)、これが設定された場合はwait_time_secondsが優先されます。

■押さえておきたいポイント

  • 標準キューは高スループット・ベストエフォート順序、FIFOキューは順序保証・重複排除に強みがあります。処理順序やメッセージの重複を許容できるかどうかで使い分けましょう。
  • 可視性タイムアウト(デフォルト30秒)やメッセージ保持期間(デフォルト4日、最大14日)などのプロパティは処理内容に合わせて調整することで、メッセージの取りこぼしや二重処理を防げます。
  • FIFOキューのスループット上限やメッセージサイズ上限などの数値仕様は改定されることがあるため、システム設計時は必ずAWS公式ドキュメントで最新の数値を確認しましょう。

■よくある質問

Q1. SQSの標準キューとFIFOキューはどちらを選べばよいですか?

処理順序や重複排除を厳密に守る必要がある場合はFIFOキューを、順序よりもスループットとコストを優先する場合は標準キューを選ぶのが基本方針です。オンラインショップの注文処理や決済のように処理順序が重要な場合はFIFOキュー、大量のログ集計やバッチ処理のように多少の順序の乱れや重複を許容できる場合は標準キューが適しています。

Q2. SQSにはメッセージを何日間保存できますか?

メッセージ保持期間は1分(60秒)から14日間の範囲で設定可能で、デフォルトは4日間です。用途に応じてキューごとに設定を変更できます。

Q3. SQSの利用料金はどのくらいかかりますか?

SQSは従量課金制で、リクエスト数などに応じて料金が発生します(無料利用枠あり)。具体的な料金体系は改定されることがあるため、最新料金はAWS公式サイトでご確認ください。

■まとめ

AWS SQSは、処理と処理の連携、システム間連携でお悩みのエンジニアにも良く利用されている人気のサービスの一つです。業務の効率化を図るためにも、この機会にユースケースや特徴などを理解して利用の検討をしてみてはいかがでしょうか。

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →