AWS

【AWS】Amazon SQS(Simple Queue Service)とは?徹底解説!

  • このエントリーをはてなブックマークに追加



Amazon SQS(Simple Queue Service)とは?

Amazon SQSは、マネージド型メッセージングキューサービスです。SQSを利用する事で受信者に対し、Pull型のメッセージ配信(メッセージ受信者が任意のタイミングでキューイングサービスのメッセージを取得する方式)をする事が可能です。

スケーラブルで比較的安価という特徴があります。

SQSは複数のコンポーネントを繋ぐ際に利用される事が多く、分散アプリケーション、マイクロサービスアーキテクチャなどのアプリケーションを構築する事が可能です。

ユースケース

Amazon SQSは例として、以下の様なユースケースが存在します。

  1. イベント駆動システム:サービス(AWSサービス及びマイクロサービスアプリケーション)間にAmazon EventBridge及びSQSを組み合わせる事で、Pull型にてイベント駆動のシステムが構築可能です。
  2. 通知:SQSは、Amazon SNSと組み合わせて、通知機能を実現可能です。SNSのみでも通知機能は作成できますが、SQSをSNSの後に配置する事で、通知をキューイングしてPull型のメッセージ配信が可能となります。
  3. ジョブキュー:SQSは、ジョブキューとして使用可能です。ジョブは、ワーカーが消費し、完了したら自動的に削除されます。これにより、アプリケーションは、スケーラビリティ、耐久性、そして失敗の自動復旧を提供できます。

料金

Amazon SQSには標準キューとFIFOキューのというキューイングの方法があり(後程記載)、それぞれ料金が異なります。また、どちらも月100万リクエストまでは無料となります。

標準キュー

  • ~100万リクエスト/月:無料
  • 100万~1000億リクエスト/月:0.40USD/100万リクエスト
  • 1000億~2000億リクエスト/月:0.35USD/100万リクエスト
  • 2000億リクエスト~/月:0.32USD/100万リクエスト

FIFOキュー

  • ~100万リクエスト/月:無料
  • 100万~1000億リクエスト/月:0.50USD/100万リクエスト
  • 1000億~2000億リクエスト/月:0.46USD/100万リクエスト
  • 2000億リクエスト~/月:0.42USD/100万リクエスト

料金は変動する可能性があるので、詳細はAWS公式ドキュメントを参照下さい。

ハンズオン概要

以下で実際にSQSを利用していきます。

今回は、SNSからの通知をSQSで受け取りキューイングするというシナリオを想定します。

利用手順

※当ページでは2023年4月現在のSQSについて解説します。クラウドサービスは頻繁にアップデートが施されるため、仕様が異なる可能性があります。

ログイン

まずは、AWS公式ページからAzureにログインしましょう。

SQSの作成

サインイン後検索バーに”SQS”と入力し、”Simple Queue Service”を押下します。

遷移先から、”キューを作成”を押下します。

“詳細”は以下の様に設定します。

  • タイプ:キューのタイプを指定します。今回は”標準”を選択します。
    • 標準:少なくとも一度メッセージをキューイングします。メッセージが重複する可能性があり、順序も変わる可能性があります。しかし、スループットが高く、コストもFIFOより安いです。
    • FIFO:メッセージを重複無く、順序を守ってキューイングします。スループットは標準より低く、コストは標準より高くなります。
  • 名前:任意の名前を付与します。今回は”test-queue”と命名します。

“設定”は以下の様に定義します。

  • 可視性タイムアウト:可視性タイムアウトとは、あるコンシューマーがメッセージにアクセスした際に、指定された期間(デフォルトでは30秒)他のコンシューマーの同一メッセージをブロックする機能です。同一のメッセージが複数のユーザーにより取得されるのを防ぎたい場合に利用します。
  • メッセージ保持期間:メッセージ保持期間はキューに存在するメッセージを最大どれだけの時間保持するかを決定します。今回はデフォルトの4日に設定する。
  • 配信遅延:メッセージ送信者がSQSにメッセージを送信してから一定期間メッセージのアクセスをブロックする機能です。リトライ処理を一定時間後に行いたい場合などに利用します。
  • 最大メッセージサイズ:メッセージの最大サイズを定義します。最大256KBです。今回は256KBとします。
  • メッセージ受信待機時間:サブスクライバーがメッセージを取得するまで待機する時間を設定します。デフォルトでは0秒となっています。0秒にすると、ショートポーリングというキューを確認して即応答をする(メッセージが存在しない場合空のレスポンス)形式となります。今回は”20秒”とします。

“暗号化”については以下のように設定します。

  • サーバー側の暗号化:キュー内に存在するメッセージを暗号化するかどうかを設定します。暗号化した場合、サブスクライバーは鍵を利用して複合する必要があります。デフォルトでは有効になっています。今回は”無効”を設定します。
  • Encryption key type: 暗号化を有効にした場合、どの鍵を利用して暗号化を行うかを設定します。Amazon SQSが作成、管理、使用するAmazon SQSキーと、AWS KMSが保護するAWS Key Management Serviceキーが存在します。今回はデフォルトのAmazon SQSキーを使用します。

“アクセスポリシー”については以下のように設定します。

  • メソッドを選択:アクセスポリシーを設定する方法を選択します。今回は”ベーシック”を選択します。
    • ベーシック:AWSが事前定義したポリシーを用いてアクセスポリシーを作成します。
    • アドバンスト:独自でJSON形式にてアクセスポリシーを定義します。
  • キューにメッセージを送信できるユーザーを定義:キューにメッセージを送信できるユーザーを定義します。今回は”キュー所有者のみ”を選択します。
  • キューからメッセージを受信できるユーザーを定義:キューからメッセージを受信できるユーザーを定義します。今回は”キュー所有者のみ”を選択します。

“許可ポリシーの再実行”については以下の様に設定します。

  • このキューをデッドレターキューとして使用できるソースキューを選択します。:作成するキューをデッドレターキューとして利用する場合はこちらを有効にします。今回は”無効”にします。

“デッドレターキュー”については以下の様に設定します。

  • 配信不能メッセージを受信するようにこのキューを設定します。:デッドレターキューを送信するキューを指定する場合は有効にします。今回は”無効”を選択します。

タグについては、今回は付与しません。

上記の設定が完了したら、SQS単体で動作確認を行います。”メッセージを送受信”を押下します。

“メッセージ本文”に任意の文字を入力し、”メッセージを送信”を押下します。こちらを実施すると、SQSが自身に向け、テストのメッセージを送信します。

“メッセージをポーリング”を押下すると、送信したメッセージが表示されます。

IDを押下すると、テストにて作成したメッセージが本文に記載されている事が確認できます。

SNSの作成

Amazon SNSのトピックタブより、トピックを作成します。基本的にデフォルト設定で問題ありません。詳細は、【AWS】Amazon SNSとは?徹底解説!よりご確認下さい。

SQSをSNSにサブスクライブする

SNSが作成できたら、SQSをSNSにサブスクライブします。SQSの管理画面より、”Amazon SNSトピックにサブスクライブ”を押下します。

先程作成したSNSを選択し、”保存”を押下します。

SQSをサブスクライバとして保存できたら、SNSからメッセージを発行します。SNSからのメッセージを受信できれば成功です。

SNSの先程作成したトピックを選択し、”メッセージの発行”を押下します。

SNSからのメッセージと分かる任意の件名とメッセージ本文を入力し、”メッセージの発行”を押下します。

先程の手順でSQSよりポーリングを行うと、受信メッセージが増えている事が確認できます。IDを確認し、SNSから作成したメッセージである事が確認できれば成功です。

関連記事

【AWS】Amazon SNSとは?徹底解説!

  • このエントリーをはてなブックマークに追加

お問い合わせ

    このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。

    コメントを残す

    *