目次

Amazon SQS 完全ガイド 2026

初心者から実務者向けの包括的解説

Amazon SQS(Simple Queue Service) は、AWS の フルマネージド・メッセージキューイングサービス であり、アプリケーションコンポーネント間を非同期に疎結合する。プロデューサーがメッセージをキューに送信し、コンシューマーが独立したペースで処理する。スパイクトラフィックのバッファ・マイクロサービス間通信・分散ワーカー処理の標準パターン。2026 年現在、最新の Per-Message Filtering・Enhanced FIFO・EventBridge Pipes 統合に対応。

ドキュメントの目的

本ガイドは以下を対象としています。

  • 初心者向け: SQS とは何か、なぜ必要かを学びたい方
  • 開発者向け: Producer / Consumer を実装したい方
  • SRE / インフラ向け: SQS キューを設計・運用したい方
  • アーキテクト向け: 非同期・疎結合システム設計を学びたい方
  • 意思決定者向け: SQS vs Kafka vs RabbitMQ vs NATS の比較・選定

2026 年の SQS エコシステム

  • FIFO High-Throughput Mode:最大 70,000 msg/sec(従来 3,000 → 拡張)
  • Per-Message Filtering:JSON フィルタで受信側負荷削減
  • EventBridge Pipes 統合:Serverless ETL パイプラインとの自動連携
  • AWS Lambda Advanced Batching:batchWindow + partial batch responses で低レイテンシ・高スループット両立
  • CloudWatch メトリクス拡張:ApproximateAgeOfOldestMessage・ReceiveCount 可視化

目次

  1. 概要
  2. SQS が解決する課題
  3. 主な特徴
  4. アーキテクチャ
  5. キュータイプ(Standard、FIFO、High-Throughput FIFO)
  6. 主要ユースケース(10+)
  7. メッセージライフサイクル
  8. 可視性タイムアウト(Visibility Timeout)
  9. ロングポーリング・短ポーリング
  10. デッドレターキュー(DLQ)と Redrive Policy
  11. FIFO キューの重複排除と順序保証
  12. メッセージフィルタリング(Per-Message Filtering)
  13. Lambda イベントソースマッピング
  14. SNS-SQS ファンアウトパターン
  15. EventBridge Pipes との連携
  16. セキュリティ(IAM、Resource Policy、KMS)
  17. CloudWatch メトリクスと監視
  18. 他の類似ツールとの比較
  19. クライアントとエコシステム
  20. ベストプラクティス
  21. トラブルシューティング
  22. 2025-2026 最新動向
  23. 学習リソース
  24. 実装例・活用シーン
  25. 導入ロードマップ
  26. 実装チェックリスト
  27. まとめ
  28. 参考文献

概要

初心者向けメモ: SQS は「郵便局」のような存在。プロデューサーが手紙(メッセージ)を送ると、SQS(郵便局)が一時的に保管し、コンシューマー(受取人)が自分のペースで受け取る。送信者と受取人の都合を合わせる必要がない(非同期・疎結合)ため、どちらかが忙しくてもシステムが止まりません。

SQS は、分散アプリケーションにおいて、非同期メッセージングスケーラビリティ・信頼性・シンプルさ を備えて実現する、AWS の標準メッセージキューサービスです。

SQS の位置づけ

SQS は、以下の 3 つの要素を統合します:

  1. メッセージキューイング:Producer が送信、Consumer が受信、キュー側で一時保管
  2. スケーラビリティ:自動スケーリング、スループット無制限(標準キュー)
  3. 信頼性:メッセージの確認応答・再試行・DLQ による障害処理

SQS が解決する課題

従来の課題

課題 説明
スパイクトラフィック対応 API が突発的に 1000 倍のリクエストを受けると、直接バックエンドに流すと過負荷で障害
サービス間の結合度の高さ マイクロサービス A が B に直接 HTTP 呼び出し、B が落ちると A も影響
バッチ処理の複雑性 複数消費者が同じキューから取得、重複処理・漏れ・順序乱れが発生
失敗時の再試行管理 エラーメッセージの永遠ループ、失敗メッセージの追跡が困難
順序保証と重複排除 金融・決済など順序・一回限り配信が必須な処理に非対応

SQS が提供する解決策

スパイク耐性:Producer は任意のペースで投入、Consumer は処理可能なレートで取得
疎結合:Producer と Consumer が独立、一方の障害が他方に波及しない
自動スケーリング:メッセージ数に応じて自動調整、キャパシティ計画不要
信頼性:DLQ で失敗メッセージ隔離、手動リトライ対応
順序・重複排除:FIFO キュー で厳密な順序保証・正確に 1 回配信
低レイテンシ:直接キューからの取得で数ミリ秒応答
マネージド:インフラ管理不要、AWS が 99.99% SLA 保証


主な特徴

特徴 説明
フルマネージド インフラ管理不要、AWS が自動スケーリング・耐障害性を保証
スケーラビリティ 標準キュー毎秒数万〜数百万、FIFO も High-Throughput 70,000 msg/sec
低レイテンシ 数ミリ秒応答、キューイング・バッチ処理で超低遅延実現
信頼性 メッセージ確認応答・可視性タイムアウト・DLQ で信頼性向上
シンプルな API SendMessage / ReceiveMessage / DeleteMessage だけで基本操作完結
複数消費者対応 複数 Consumer Group で同時消費、Consumer Group 管理不要(Kafka と異なり)
フィルタリング Per-Message Filtering で受信側負荷削減、効率化
統合性 Lambda Event Source Mapping、SNS Fan-out、EventBridge Pipes 対応
セキュリティ IAM / Resource Policy / KMS / VPC Endpoint サポート

アーキテクチャ

SQS キュー全体構造

graph TD
    P1["Producer 1"]
    P2["Producer 2"]
    P3["Producer 3"]
    
    P1 -->|SendMessage| Queue["SQS キュー"]
    P2 -->|SendMessage| Queue
    P3 -->|SendMessage| Queue
    
    Queue -->|ReceiveMessage<br/>batchSize=10| C1["Consumer 1"]
    Queue -->|ReceiveMessage<br/>batchSize=10| C2["Consumer 2"]
    
    C1 -->|DeleteMessage| Queue
    C2 -->|DeleteMessage| Queue
    
    Queue -->|可視性タイムアウト<br/>30秒超過| Queue
    Queue -->|maxReceiveCount超過| DLQ["デッドレターキュー"]
    
    Lambda["Lambda<br/>Event Source<br/>Mapping"]
    Queue -->|Trigger<br/>batchSize=10| Lambda
    
    SNS["SNS Topic"]
    Queue -->|Subscribe| SNS

キューの内部構造

SQS キュー
├── Message 1 (ID: msg-001, ReceiveCount: 0, VisibilityTimeout: 10:00:30)
├── Message 2 (ID: msg-002, ReceiveCount: 0, VisibilityTimeout: 10:01:00)
├── Message 3 (ID: msg-003, ReceiveCount: 1, VisibilityTimeout: 10:02:15)
└── Message 4 (ID: msg-004, ReceiveCount: 2, VisibilityTimeout: 10:03:00)
     ↓ maxReceiveCount (3) 超過時
DeadLetterQueue
└── Message 4 (移動)

Producer / Consumer

  • Producer:SendMessage で非同期メッセージ送信、即座に返す
  • Consumer:ReceiveMessage でバッチ取得、処理後 DeleteMessage で削除

キュータイプ(Standard、FIFO、High-Throughput FIFO)

特性 標準キュー FIFO キュー FIFO High-Throughput
順序保証 ベストエフォート(順序不保証) ✅ グループ内で厳密な順序保証 ✅ 同上
重複配信 重複の可能性あり(まれ) ✅ 正確に 1 回配信(MessageDeduplicationId) ✅ 同上
スループット 無制限(毎秒数万〜数百万) 3,000 msg/sec 70,000 msg/sec
メッセージグループ N/A ✅ MessageGroupId で順序グループ化 ✅ 同上
ユースケース ログ、画像処理、非同期タスク 決済、在庫、順序依存処理 高スループット + 順序が必要な場合
レイテンシ マイクロ秒〜ミリ秒 ミリ秒(順序保証コスト) ミリ秒
コスト `0.40/100万リクエスト `0.50/100万リクエスト $0.50/100万リクエスト

初心者向けメモ:

  • 標準キュー:注文数・売上集計など順序不問の高スループット用
  • FIFO キュー:決済・在庫・銀行取引など順序・一回限り配信が必須
  • FIFO High-Throughput:決済が大量だが順序も必須な場合

主要ユースケース(10+)

1. スパイクトラフィックのバッファリング

ユースケース:ECサイトのセール時に 1 分間 100 万件の注文を受け付けながら、在庫更新は処理可能なレート(数千件/分)で実行

注文API(最大受信)
    ↓ SendMessage
SQS 標準キュー(バッファ)
    ↓ ReceiveMessage(batchSize=1000)
在庫更新 Lambda(毎秒処理可能な量を消費)

メリット: ✅ API は直接バックエンド過負荷なし
✅ バックエンド は自分のペースで処理
✅ 完全な非同期・疎結合

2. マイクロサービス間の疎結合メッセージング

ユースケース:注文マイクロサービス → 支払いマイクロサービス → 配送マイクロサービス(SAGA パターン)

Order Service → order-created キュー → Payment Service
                                           ↓ payment-completed キュー
                                        Inventory Service
                                           ↓ inventory-reserved キュー
                                        Shipping Service

メリット: ✅ 各サービスが独立してスケール
✅ 一部サービス障害が他に波及しない
✅ サービス追加・削除が容易

3. 非同期ジョブ処理・タスク分散

ユースケース:動画配信プラットフォームがアップロードされた動画の変換ジョブを SQS で分散

ビデオアップロード → SQS キュー
    ↓ Trigger
ECS ワーカー(複数台オートスケーリング)
    ↓ MediaConvert API 呼び出し
変換完了 → S3 保存

メリット: ✅ ワーカー数を自動スケーリング
✅ 長時間ジョブの進行状況追跡可能
✅ DLQ で失敗ジョブを隔離・再試行

4. 決済・金融トランザクション処理

ユースケース:SQS FIFO で決済トランザクションを順序保証・正確に 1 回配信

決済リクエスト → SQS FIFO キュー
                (MessageGroupId: user_id で順序保証)
                (MessageDeduplicationId で重複排除)
    ↓
決済ワーカー(順序通りに処理)
    ↓
二重課金なし、順序通り処理完了

メリット: ✅ 正確に 1 回配信(重複排除)
✅ ユーザー単位で順序保証
✅ トランザクション安全性確保

5. ログ・イベント集約

ユースケース:複数アプリケーションのイベントを SQS で集約、Kinesis Firehose → S3 へ保存

  • App1, App2, App3 → SQS キュー → Kinesis Firehose → S3 パーティション保存

6. データレプリケーション・同期

ユースケース:DB 変更を SQS で通知、複数のエンドポイント(キャッシュ、検索エンジン)に同期

DB 変更 → Eventbridge Rule → SQS キュー
    ├─ → ElastiCache 無効化
    ├─ → Elasticsearch インデックス更新
    └─ → DynamoDB 同期

7. メール・通知の非同期送信

ユースケース:ユーザー登録時にメール送信を非同期で実行

ユーザー登録API(即座に返す)
    ↓
SQS キュー
    ↓
メール送信 Worker(SES 呼び出し)

メリット: ✅ API が SMTP 待機しない
✅ メール送信失敗時 DLQ で追跡

8. Lambda + SQS の自動バッチ処理

ユースケース:SQS から自動でバッチ取得、Lambda で並列処理

  • SQS キュー(1000 件)
  • ↓ Event Source Mapping
  • Lambda(batchSize=100、10 個の Lambda 並列実行)
  • ↓ 各 Lambda が 100 件バッチ処理

9. ファンアウトパターン(SNS + SQS)

ユースケース:1 つのイベントで複数の独立した処理を並列実行

注文確定イベント → SNS Topic
    ├── SQS キュー A(メール送信)
    ├── SQS キュー B(在庫更新)
    └── SQS キュー C(請求処理)

メリット: ✅ 各処理が独立して実行
✅ 一つの処理遅延が他に影響しない
✅ 新規処理追加が容易(SQS キュー追加のみ)

10. リトライ・遅延処理

ユースケース:決済失敗時に 5 分後に自動リトライ、または支払い期限を 1 日後に設定

決済リクエスト → SQS キュー
    ├─ 成功 → 完了
    └─ 失敗 → DelaySeconds: 300 で再投入
              → 5 分後に再度取得・処理

11. IoT デバイスコマンド配信

ユースケース:数百万 IoT デバイスへのコマンド配信、確認応答管理

  • コマンド送信 → SQS FIFO キュー
  • (device_id をグループ ID に)
  • Device Agent(順序通りにコマンド実行)

12. ワークフロー・複雑なプロセス調整

ユースケース:複数ステップのワークフロー(申請 → 承認 → 実行 → 完了)を SQS で管理

  • 申請 → approval-queue
  • ↓ 承認ワーカー → execution-queue
  • ↓ 実行ワーカー → completion-queue

メッセージライフサイクル

メッセージの状態遷移

graph TD
    A["Producer が SendMessage"] -->|キューに保存| B["キュー内<br/>Available"]
    B -->|Consumer が<br/>ReceiveMessage| C["In Flight<br/>可視性タイムアウト中"]
    C -->|処理成功<br/>DeleteMessage| D["✅ 削除"]
    C -->|処理失敗 or<br/>ChangeMessageVisibility| C
    C -->|可視性タイムアウト<br/>超過| B
    B -->|ReceiveCount ≥<br/>maxReceiveCount| E["❌ DLQ へ移動"]

メッセージライフサイクルの詳細

1. Producer: SendMessage
   → キューに Message ID (msg-abc123) で保存
   → ReceiveCount: 0
   → VisibilityTimeout: 30 秒(デフォルト)

2. Consumer 1: ReceiveMessage
   → Message 受信
   → VisibilityTimeout: 30 秒スタート
   → この間、他の Consumer には見えない

3a. 処理成功: Consumer が DeleteMessage
   → メッセージ削除完了
   → ✅ ライフサイクル終了

3b. 処理失敗: Consumer が処理に失敗 + ChangeMessageVisibility(60 秒に延長)
   → タイムアウト: 60 秒
   → ReceiveCount: 1

4. 可視性タイムアウト超過(何も応答なし)
   → Message が Available に戻る
   → ReceiveCount: 2

5. Consumer 2: ReceiveMessage(再度受信)
   → VisibilityTimeout: 新たに 30 秒

6. maxReceiveCount 超過(e.g., 3 回)
   → 4 回目受信後、ReceiveCount = 3 超過
   → ❌ DLQ(DeadLetterQueue)に移動
   → 通常キュー: Message 削除
   → DLQ: Message 保存(手動確認・修正・再処理待ち)

可視性タイムアウト(Visibility Timeout)

概念

デフォルト: 30 秒
範囲: 0〜43,200 秒(12 時間)

Timeline:
  10:00:00 → Consumer がメッセージ受信
  10:00:00 → 10:00:30 → 可視性タイムアウト期間中
                         (他の Consumer には見えない)
  10:00:15 → 処理完了 → DeleteMessage → ✅ 削除
  
  10:00:00 → Consumer がメッセージ受信
  10:00:00 → 10:00:30 → 可視性タイムアウト期間中
  10:00:31 → タイムアウト超過
             DeleteMessage されていない
             → メッセージが Available に戻る
             → 別の Consumer が再度受信可能
             → ❌ 二重処理のリスク

設定のベストプラクティス

設定値 = 処理時間 + マージン(バッファ)

処理時間が 10 秒かかる場合:
  Visibility Timeout = 20〜30 秒(マージン 2〜3 倍)
  
理由:
  - ネットワーク遅延
  - GC pause
  - 一時的な外部 API 遅延

❌ アンチパターン:
  処理時間 10 秒 → Visibility Timeout = 5 秒
  → タイムアウト超過 → 別 Consumer が受信 → 二重処理

ChangeMessageVisibility で動的延長

import boto3

sqs = boto3.client('sqs')

# メッセージ受信
response = sqs.receive_message(QueueUrl=queue_url)
message = response['Messages'][0]

# 長時間処理中に Visibility Timeout を延長
sqs.change_message_visibility(
    QueueUrl=queue_url,
    ReceiptHandle=message['ReceiptHandle'],
    VisibilityTimeout=120  # 新たに 120 秒延長
)

# 処理実行(120 秒の猶予)
process_message(message)

# 処理完了後に削除
sqs.delete_message(
    QueueUrl=queue_url,
    ReceiptHandle=message['ReceiptHandle']
)

ロングポーリング・短ポーリング

ショートポーリング(デフォルト)

ReceiveMessage(WaitTimeSeconds: 0)
    ↓ キューが空 → 即座に空で返す
    ↓ キューにメッセージ → 即座に返す

問題:
  ❌ メッセージがない場合の「空振り」が多い
  ❌ API 呼び出し増加 → コスト増大
  ❌ CPU 無駄遣い

ロングポーリング(推奨)

ReceiveMessage(WaitTimeSeconds: 20)
    ↓ キューが空 → 最大 20 秒待機
    ↓ メッセージ到着 → 即座に返す
    ↓ 20 秒経過でも来ない → 空で返す

メリット:
  ✅ 空振り減少 → API 呼び出し削減
  ✅ コスト削減(数 10%)
  ✅ CPU 効率化

コスト比較

シナリオ:毎分 100 メッセージ、キューに Consumer 1 台

ショートポーリング(WaitTimeSeconds: 0):
  ReceiveMessage を毎秒呼び出し × 60 秒 = 60 呼び出し/分
  100 メッセージ(メッセージごとに cost)
  → 合計 160 リクエスト/分 × 30 日 × 24 時間 = 69,120 リクエスト/月

ロングポーリング(WaitTimeSeconds: 20):
  ReceiveMessage を毎 20 秒に 1 回呼び出し × 3 = 3 呼び出し/分
  100 メッセージ(メッセージごとに cost)
  → 合計 103 リクエスト/分 × 30 日 × 24 時間 = 44,352 リクエスト/月

削減率: (69,120 - 44,352) / 69,120 = 35% コスト削減 ✅

実装例

# ✅ ロングポーリング(推奨)
response = sqs.receive_message(
    QueueUrl=queue_url,
    MaxNumberOfMessages=10,
    WaitTimeSeconds=20  # 最大 20 秒待機
)

# ❌ ショートポーリング(避けるべき)
response = sqs.receive_message(
    QueueUrl=queue_url,
    MaxNumberOfMessages=10,
    WaitTimeSeconds=0  # 即座に返す
)

デッドレターキュー(DLQ)と Redrive Policy

DLQ の役割

graph TD
    MQ["メインキュー<br/>maxReceiveCount: 3"]
    C1["Consumer 1"]
    C2["Consumer 2"]
    C3["Consumer 3"]
    DLQ["デッドレターキュー<br/>DLQ"]
    
    MQ -->|1 回目| C1
    C1 -->|失敗| MQ
    MQ -->|2 回目| C2
    C2 -->|失敗| MQ
    MQ -->|3 回目| C3
    C3 -->|失敗| MQ
    MQ -->|4 回目<br/>maxReceiveCount超過| DLQ
    DLQ -->|人間が調査・修正| MQ

DLQ の設定

{
  "QueueName": "main-queue",
  "RedrivePolicy": {
    "deadLetterTargetArn": "arn:aws:sqs:us-east-1:123456789012:main-queue-dlq",
    "maxReceiveCount": 3
  }
}

DLQ + CloudWatch Alarm

DLQ にメッセージが到達
    ↓ CloudWatch Alarm(ApproximateNumberOfMessages > 0)
    ↓ SNS 通知
    ↓ SRE チーム がアラート受け取り
    ↓ DLQ メッセージを調査・修正
    ↓ メッセージを手動で再処理キューへ

Redrive Allow Policy(v2)

{
  "DeadLetterQueue": "arn:aws:sqs:...:main-queue-dlq",
  "RedriveAllowPolicy": {
    "sourceQueueArns": [
      "arn:aws:sqs:...:main-queue"
    ]
  }
}

メリット: ✅ DLQ が受け取る対象キューを明示的に管理
✅ 誤った再ルーティングを防止


FIFO キューの重複排除と順序保証

メッセージグループ ID(順序保証)

Topic: orders-fifo

Message 1:
  MessageGroupId: "user:123"
  Body: { order_id: 1001, amount: 100 }

Message 2:
  MessageGroupId: "user:123"
  Body: { order_id: 1002, amount: 200 }

Message 3:
  MessageGroupId: "user:456"
  Body: { order_id: 1003, amount: 150 }

処理:
  ✅ user:123 のメッセージは順序通りに処理(1001 → 1002)
  ✅ user:456 のメッセージは並列に処理可能
  ✅ 異なる MessageGroupId は並列化で高スループット実現

メッセージ重複排除 ID(正確に 1 回配信)

重複排除期間: 5 分

送信 1 回目: MessageDeduplicationId: "txn-abc123"
送信 2 回目(ネットワーク遅延で再送): MessageDeduplicationId: "txn-abc123"
    → 同じ ID のため 5 分間は重複排除
    → キュー内に 1 件のみ保存

5 分後に同じ ID で再送:
    → 重複排除期間終了のため受け入れ
    → キュー内に 2 件

メリット:
  ✅ 正確に 1 回配信保証(決済・金融用)
  ✅ Producer が retry 実装しても安全

FIFO キューの特性比較

項目 標準キュー FIFO キュー
メッセージグループ N/A ✅ MessageGroupId で順序グループ化
重複排除 ID N/A ✅ 5 分間の重複排除窓
スループット 無制限 3,000 msg/sec(または 70,000 with High-Throughput)
配信保証 At-least-once(重複可能) ✅ Exactly-once(正確に 1 回)
順序保証 ❌ なし ✅ グループ内で順序保証

メッセージフィルタリング(Per-Message Filtering)

機能概要(2025 年新機能)

従来:Consumer がすべてのメッセージを受け取り、アプリケーション側でフィルタリング
→ 不要なメッセージのネットワーク転送・処理が無駄

新:SQS 側で JSON フィルタを定義、条件に合うメッセージのみ配信
→ ネットワーク・アプリケーション負荷削減

{
  "FilterPolicy": {
    "eventType": ["order", "payment"],
    "amount": [{"numeric": [">", 100]}]
  }
}

フィルタリング例

キュー内のメッセージ:
  1. { eventType: "order", amount: 50 } → ❌ フィルタ外(amount ≤ 100)
  2. { eventType: "order", amount: 150 } → ✅ フィルタ対象
  3. { eventType: "login", amount: 0 } → ❌ フィルタ外(eventType != order, payment)
  4. { eventType: "payment", amount: 200 } → ✅ フィルタ対象

Consumer が受け取り:
  → Message 2, 4 のみ(不要なメッセージを受け取らない)

メリット

受信側負荷削減:不要なメッセージを受け取らない
ネットワーク帯域削減:フィルタ外のデータ転送なし
アプリケーション効率化:本処理に集中
マルチ Consumer 対応:各 Consumer が異なるフィルタを設定可能


Lambda イベントソースマッピング

Event Source Mapping の動作

SQS キュー(1000 メッセージ)
    ↓ Event Source Mapping(ポーリング)
    ↓ batchSize: 100(100 件ずつ取得)
Lambda 関数 × 10(並列実行)
    ↓ 各 Lambda が 100 件バッチ処理
完了 → 自動的に DeleteMessage
失敗 → DLQ or 再試行

設定パラメータ

{
  "EventSourceMappings": {
    "QueueUrl": "https://sqs.us-east-1.amazonaws.com/.../my-queue",
    "FunctionName": "my-processor",
    "Enabled": true,
    "BatchSize": 100,
    "MaximumBatchingWindowInSeconds": 5,
    "MaximumRetryAttempts": 2,
    "DestinationConfig": {
      "OnFailure": {
        "Type": "SQS",
        "Destination": "arn:aws:sqs:.../my-queue-dlq"
      }
    }
  }
}

batchSize と batchWindow のチューニング

シナリオ: 毎秒 1000 メッセージ到着

batchSize: 10, batchWindow: 0
  → 毎回 10 件のみ → Lambda 100 回/秒実行
  → コスト高、レイテンシ低

batchSize: 100, batchWindow: 5
  → 最大 100 件 or 5 秒待機(先に達した方)
  → 毎秒 10 回の Lambda 実行
  → コスト低、レイテンシ中
  → バランス型(推奨)

batchSize: 1000, batchWindow: 30
  → 最大 1000 件を最大 30 秒待機
  → スループット最大化
  → レイテンシ高(リアルタイム性が必要なら不適切)

Partial Batch Response(失敗時の部分応答)

{
  "FunctionResponseTypes": ["ReportBatchItemFailures"]
}

従来:バッチ内のメッセージ 1 件が失敗 → バッチ全体が再試行
→ 成功メッセージも再処理(重複)

新:失敗した メッセージのみ報告 → 成功メッセージは自動削除
→ 重複回避、効率化

def lambda_handler(event, context):
    failed_message_ids = []
    
    for message in event['Records']:
        try:
            process(message)
        except Exception as e:
            failed_message_ids.append(message['messageId'])
    
    return {
        'batchItemFailures': [
            {'itemIdentifier': msg_id} 
            for msg_id in failed_message_ids
        ]
    }

SNS-SQS ファンアウトパターン

構造

graph TD
    Event["イベント(注文確定)"]
    SNS["SNS Topic"]
    
    SQSA["SQS Queue A<br/>メール送信"]
    SQSB["SQS Queue B<br/>在庫更新"]
    SQSC["SQS Queue C<br/>請求処理"]
    
    Event -->|Publish| SNS
    SNS -->|Subscribe| SQSA
    SNS -->|Subscribe| SQSB
    SNS -->|Subscribe| SQSC
    
    LA["Lambda メール送信"]
    LB["Lambda 在庫更新"]
    LC["Lambda 請求処理"]
    
    SQSA -->|Event Source Mapping| LA
    SQSB -->|Event Source Mapping| LB
    SQSC -->|Event Source Mapping| LC

メリット

1-to-Many(ファンアウト):1 つのイベントで複数のキューにメッセージ配信
完全な疎結合:各処理が独立、一つの遅延が他に影響しない
新規処理追加が容易:新しい SQS キュー + Lambda 関数を追加するだけ
再試行・DLQ 管理:各 SQS キューで独立的に管理

実装例

import boto3

sns = boto3.client('sns')
sqs = boto3.client('sqs')

# SNS Topic にメッセージ発行
response = sns.publish(
    TopicArn='arn:aws:sns:us-east-1:123456789012:order-events',
    Message=json.dumps({
        'order_id': 1001,
        'amount': 150,
        'timestamp': '2026-04-26T10:00:00Z'
    }),
    MessageStructure='json'
)

# SQS サブスクリプション設定(SNS コンソールから)
# → 複数 SQS キューが同じ SNS Topic を購読

EventBridge Pipes との連携

EventBridge Pipes 統合(2025 年新機能)

  • SQS キュー → EventBridge Pipe → 変換(Optional) → ターゲット(Kinesis/SNS/Lambda)

従来:Consumer が SQS からメッセージを取得 → 自分で変換・ルーティング
:EventBridge Pipes が自動的に SQS → 変換 → ターゲットを連携

メリット

Serverless ETL:インフラ管理不要
ローコード:AWS Console で設定
複雑な変換:Input Transformer で JSON パス操作
複数ターゲット:1 つの Pipe で複数ターゲットへ配信

実装例

{
  "Name": "sqs-to-kinesis-pipe",
  "Source": {
    "Arn": "arn:aws:sqs:us-east-1:123456789012:my-queue",
    "BatchSize": 100
  },
  "Enrichment": {
    "HttpParameters": {
      "HeaderParameters": {
        "X-Custom-Header": "value"
      }
    }
  },
  "Target": {
    "Arn": "arn:aws:kinesis:us-east-1:123456789012:stream/my-stream",
    "RoleArn": "arn:aws:iam::123456789012:role/pipe-role"
  }
}

セキュリティ(IAM、Resource Policy、KMS)

IAM ポリシー

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::123456789012:role/lambda-execution-role"
      },
      "Action": [
        "sqs:SendMessage",
        "sqs:ReceiveMessage",
        "sqs:DeleteMessage",
        "sqs:GetQueueAttributes"
      ],
      "Resource": "arn:aws:sqs:us-east-1:123456789012:my-queue"
    }
  ]
}

キューベースの Resource Policy

{
  "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/my-queue",
  "Policy": {
    "Version": "2012-10-17",
    "Statement": [
      {
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::123456789012:role/lambda-role"
        },
        "Action": "sqs:*",
        "Resource": "*"
      }
    ]
  }
}

KMS 暗号化

{
  "QueueName": "my-queue",
  "Attributes": {
    "KmsMasterKeyId": "arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012",
    "KmsDataKeyReusePeriodSeconds": 300
  }
}

メリット: ✅ キュー内メッセージは KMS で暗号化
✅ 保存時の機密性保証
✅ Compliance 要件対応

VPC Endpoint

  • SQS VPC Endpoint
  • ↓ NAT Gateway、Internet Gateway 経由でなく
  • ↓ VPC 内から直接 SQS へアクセス
  • ↓ セキュリティ向上、コスト削減

CloudWatch メトリクスと監視

主要メトリクス

メトリクス 説明 アラーム目安
ApproximateNumberOfMessages キュー内メッセージ数 > 10,000
ApproximateAgeOfOldestMessage キュー内最古メッセージの経過時間 > 60 秒
NumberOfMessagesSent SendMessage の呼び出し数 スパイク検知用
NumberOfMessagesReceived ReceiveMessage の呼び出し数 Consumer 活動度
NumberOfMessagesDeleted DeleteMessage の呼び出し数 処理完了数

CloudWatch Alarm 設定

import boto3

cloudwatch = boto3.client('cloudwatch')

cloudwatch.put_metric_alarm(
    AlarmName='sqs-old-message-age',
    MetricName='ApproximateAgeOfOldestMessage',
    Namespace='AWS/SQS',
    Statistic='Maximum',
    Period=300,
    EvaluationPeriods=2,
    Threshold=3600,  # 1 時間以上
    ComparisonOperator='GreaterThanThreshold',
    AlarmActions=['arn:aws:sns:us-east-1:123456789012:alert-topic']
)

Consumer Lag 監視(Custom Metric)

def monitor_consumer_lag():
    sqs = boto3.client('sqs')
    cloudwatch = boto3.client('cloudwatch')
    
    attrs = sqs.get_queue_attributes(
        QueueUrl=queue_url,
        AttributeNames=['ApproximateNumberOfMessages']
    )
    
    queue_depth = int(attrs['Attributes']['ApproximateNumberOfMessages'])
    
    # Consumer Processing Rate: 毎秒 100 メッセージ処理可能
    consumer_rate = 100
    estimated_lag_seconds = queue_depth / consumer_rate
    
    cloudwatch.put_metric_data(
        Namespace='MyApp',
        MetricData=[{
            'MetricName': 'ConsumerLagSeconds',
            'Value': estimated_lag_seconds,
            'Unit': 'Seconds'
        }]
    )

他の類似ツールとの比較

SQS vs Apache Kafka

項目 SQS Kafka
提供形態 フルマネージド OSS / マネージド
スケーラビリティ 無制限(自動) 有限(Partition 数で制限)
スループット 毎秒数百万 毎秒数百万(高スケール)
永続化 AWS が管理 自前で管理
複数消費 Consumer が独立 Consumer Group で管理
順序保証 FIFO キューで可能 デフォルト(Partition ベース)
セットアップ 数分(AWS Console) 数時間〜数日(Cluster 構築)
運用負荷 低(AWS 完全管理) 高(自前運用)
コスト 低(従量課金) 高(インフラ+人員)

選択基準:SQS 選ぶ: シンプルな非同期メッセージング、AWS 統合、運用負荷最小化
Kafka 選ぶ: 複雑なストリーム処理、イベントソーシング、多言語クライアント、高度な分析

SQS vs RabbitMQ / AWS MQ

項目 SQS Amazon MQ
提供形態 フルマネージド フルマネージド
プロトコル SQS API のみ AMQP / STOMP / MQTT / OpenWire
互換性 AWS ネイティブ ActiveMQ / RabbitMQ 互換
スケーリング 自動 Manual(Broker サイズ変更)
セットアップ 数分 数分(ただし Broker 設定複雑)
使用例 AWS Lambda 統合 オンプレミス → AWS リフト&シフト

選択基準:SQS 選ぶ: 新規 AWS 開発、Lambda 統合、シンプル構成
Amazon MQ 選ぶ: 既存 RabbitMQ / ActiveMQ コード資産の移行

SQS vs Google Pub/Sub

項目 SQS Google Pub/Sub
スケーラビリティ 無制限 ✅ 完全無制限(スケーリング不要)
レイテンシ 数ミリ秒 ✅ 最低ミリ秒
永続化 AWS 側 Google 側
複数消費 ✅ Consumer 独立 ✅ Subscriber 独立
フィルタリング ✅ Per-Message(新) ✅ 標準機能
GCP 統合 ✅ 完全統合
AWS 統合

選択基準:SQS 選ぶ: AWS エコシステム、Lambda、コスト効率
Pub/Sub 選ぶ: GCP エコシステム、完全スケーラビリティ

SQS vs Azure Service Bus

項目 SQS Azure Service Bus
提供形態 フルマネージド フルマネージド
順序保証 FIFO キュー ✅ Session ID で順序保証
メッセージの時間制限 14 日まで ✅ 最大 1 年
複数消費
Azure 統合 ✅ 完全統合

クライアントとエコシステム

主要 SDK

言語 SDK 成熟度
Python boto3 (aws-sdk) ⭐⭐⭐⭐⭐
Java aws-java-sdk-sqs ⭐⭐⭐⭐⭐
Go aws-sdk-go ⭐⭐⭐⭐⭐
Node.js @aws-sdk/client-sqs ⭐⭐⭐⭐⭐
Rust aws-sdk-sqs ⭐⭐⭐⭐
C# AWSSDK.SQS ⭐⭐⭐⭐⭐

実装例(Python)

import boto3
import json

sqs = boto3.client('sqs')

queue_url = 'https://sqs.us-east-1.amazonaws.com/123456789012/my-queue'

# SendMessage
response = sqs.send_message(
    QueueUrl=queue_url,
    MessageBody=json.dumps({'order_id': 1001, 'amount': 150}),
    MessageAttributes={
        'EventType': {
            'StringValue': 'order',
            'DataType': 'String'
        }
    }
)

# ReceiveMessage(ロングポーリング)
response = sqs.receive_message(
    QueueUrl=queue_url,
    MaxNumberOfMessages=10,
    WaitTimeSeconds=20,
    MessageAttributeNames=['All']
)

for message in response.get('Messages', []):
    print(f"MessageId: {message['MessageId']}")
    print(f"Body: {message['Body']}")
    
    # DeleteMessage
    sqs.delete_message(
        QueueUrl=queue_url,
        ReceiptHandle=message['ReceiptHandle']
    )

AWS CLI

# キュー作成
aws sqs create-queue --queue-name my-queue

# メッセージ送信
aws sqs send-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue \
  --message-body '{"order_id": 1001, "amount": 150}'

# メッセージ受信
aws sqs receive-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue \
  --max-number-of-messages 10 \
  --wait-time-seconds 20

# メッセージ削除
aws sqs delete-message \
  --queue-url https://sqs.us-east-1.amazonaws.com/123456789012/my-queue \
  --receipt-handle <RECEIPT_HANDLE>

Infrastructure as Code(IaC)

# CloudFormation
AWSTemplateFormatVersion: '2010-09-09'

Resources:
  MyQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: my-queue
      VisibilityTimeout: 30
      MessageRetentionPeriod: 1209600  # 14 days
      ReceiveMessageWaitTimeSeconds: 20
      KmsMasterKeyId: arn:aws:kms:us-east-1:123456789012:key/12345678-1234-1234-1234-123456789012

  MyQueueDLQ:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: my-queue-dlq
      MessageRetentionPeriod: 1209600

  MyQueuePolicy:
    Type: AWS::SQS::QueuePolicy
    Properties:
      Queues:
        - !Ref MyQueue
      PolicyText:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              AWS: arn:aws:iam::123456789012:role/lambda-role
            Action:
              - sqs:SendMessage
              - sqs:ReceiveMessage
              - sqs:DeleteMessage
            Resource: !GetAtt MyQueue.Arn

Terraform

resource "aws_sqs_queue" "my_queue" {
  name                      = "my-queue"
  visibility_timeout_seconds = 30
  message_retention_seconds  = 1209600
  receive_wait_time_seconds  = 20
  kms_master_key_id         = aws_kms_key.sqs_key.id
}

resource "aws_sqs_queue" "my_queue_dlq" {
  name = "my-queue-dlq"
}

resource "aws_sqs_queue_redrive_policy" "my_queue" {
  queue_url = aws_sqs_queue.my_queue.id
  
  redrive_policy = jsonencode({
    deadLetterTargetArn = aws_sqs_queue.my_queue_dlq.arn
    maxReceiveCount     = 3
  })
}

ベストプラクティス

設計段階

キュー戦略を決定

  • 標準キュー:高スループット、順序不問
  • FIFO キュー:順序・重複排除が必須
  • High-Throughput FIFO:両者の融合

可視性タイムアウト

  • 処理時間 × 1.5〜2 倍で設定
  • 長時間処理なら ChangeMessageVisibility で延長

DLQ を必須化

  • maxReceiveCount: 3(再試行 3 回)
  • 失敗メッセージを隔離・手動確認

メッセージ設計

  • 小さく(< 256 KB)
  • 自己完結(追加情報取得なし)
  • ID を含む(冪等性のため)

Producer 実装

バッチ送信

  • SendMessageBatch(最大 10 件)で複数メッセージ一括送信
  • API 呼び出し削減、コスト低下

エラーハンドリング

  • Retry Logic(exponential backoff)
  • Failed message を Dead Letter にルーティング

メッセージグループ ID(FIFO)

  • user_id / order_id などで順序グループ化
  • 同グループ内で順序保証

Consumer 実装

ロングポーリング

  • WaitTimeSeconds: 20(最大)
  • 空振り削減、コスト削減

バッチ処理

  • MaxNumberOfMessages: 10(最大)で複数メッセージ一括処理
  • Lambda Event Source Mapping で自動化

ChangeMessageVisibility

  • 長時間処理なら途中で Visibility 延長
  • タイムアウト超過 → 二重処理 防止

冪等性

  • 同じメッセージを 2 回処理してもシステム状態変わらない設計
  • DB に一意キーを設定

運用

Monitoring

  • ApproximateNumberOfMessages(キュー深さ)
  • ApproximateAgeOfOldestMessage(メッセージ経過時間)
  • Consumer Processing Rate(処理速度)

Alerting

  • キュー深さ > 10,000
  • 最古メッセージ > 1 時間
  • DLQ にメッセージ到着

キャパシティプランニング

  • ピークスループット予測
  • Message Retention 期間(デフォルト 4 日 → 14 日推奨)

トラブルシューティング

よくある問題

問題 原因 解決策
キュー深さが増加 Consumer 遅い or 停止 Consumer 数増加 / 処理時間最適化
DLQ にメッセージ溜まる Consumer エラー継続 エラーログ確認、メッセージ修正、再処理
二重処理 可視性タイムアウト < 処理時間 Visibility Timeout 延長 or ChangeMessageVisibility
メッセージ喪失 Consumer が DeleteMessage しない Consumer 実装確認、Exception handling
高コスト 短ポーリング(WaitTimeSeconds: 0) ロングポーリング(WaitTimeSeconds: 20)
FIFO キュー スループット不足 maxReceiveCount が高い High-Throughput FIFO に変更(70,000 msg/sec)

ログ調査

# CloudWatch Logs
aws logs tail /aws/lambda/my-consumer --follow

# SQS メトリクス確認
aws cloudwatch get-metric-statistics \
  --namespace AWS/SQS \
  --metric-name ApproximateAgeOfOldestMessage \
  --dimensions Name=QueueName,Value=my-queue \
  --start-time 2026-04-26T09:00:00Z \
  --end-time 2026-04-26T10:00:00Z \
  --period 60 \
  --statistics Maximum

Dead Letter Analysis

def analyze_dlq():
    sqs = boto3.client('sqs')
    
    response = sqs.receive_message(
        QueueUrl=dlq_url,
        MaxNumberOfMessages=10,
        MessageAttributeNames=['All']
    )
    
    for msg in response.get('Messages', []):
        body = json.loads(msg['Body'])
        print(f"Message: {body}")
        print(f"ReceiveCount: {msg.get('Attributes', {}).get('ApproximateReceiveCount')}")
        
        # 修正・再処理
        # ...

2025-2026 最新動向

FIFO High-Throughput Mode

従来 FIFO: 3,000 msg/sec
新 FIFO High-Throughput: 70,000 msg/sec

メリット:
  ✅ 順序保証 + 高スループット両立
  ✅ 決済システム の大規模対応
  ✅ Kafka との競争力強化

Per-Message Filtering

  • フィルタ処理を SQS 側で実施
  • → Consumer 側負荷削減
  • → ネットワーク帯域削減
  • → JSON Path 対応

EventBridge Pipes 統合

  • SQS → Pipes → 変換 → ターゲット
  • Serverless ETL パイプライン実現
  • コンソール設定のみでローコード開発可能

Lambda Advanced Batching

  • batchWindow + Partial Batch Response で最適化
  • → 低レイテンシ + 高スループット + 重複回避を同時実現

CloudWatch Metrics 拡張

  • 新メトリクス:
  • ApproximateAgeOfOldestMessage(最古メッセージの経過時間)
  • ReceiveCount(受信回数の分布)
  • → より細かい監視・アラート設定可能

学習リソース

公式ドキュメント

  1. AWS SQS Developer Guide https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/

  2. SQS API Reference https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/

  3. SQS Best Practices https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/best-practices-receiving-processing-messages.html

  4. SQS Pricing https://aws.amazon.com/sqs/pricing/

  5. AWS EventBridge Pipes https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html

書籍

  1. 『AWS Lambda in Action』(Manning)- Serverless + SQS パターン
  2. 『Microservices Patterns』(Manning)- SAGA パターン、非同期メッセージング
  3. 『Designing Data-Intensive Applications』(O’Reilly)- 分散メッセージング理論

オンライン学習

  1. AWS Training:SQS Basics https://www.aws.training/

  2. Linux Academy / A Cloud Guru https://www.pluralsight.com/


実装例・活用シーン

シーン 1:EC サイト注文処理

# Producer: API
import boto3
import json

sqs = boto3.client('sqs')

def create_order(order_data):
    # 注文をすぐに受け付け(非同期処理)
    sqs.send_message(
        QueueUrl=os.environ['ORDER_QUEUE_URL'],
        MessageBody=json.dumps(order_data),
        MessageGroupId=f"user:{order_data['user_id']}",  # FIFO で順序保証
        MessageDeduplicationId=f"order:{order_data['order_id']}"  # 重複排除
    )
    return {'status': 'order received', 'order_id': order_data['order_id']}

# Consumer: Lambda
def process_order(event, context):
    for record in event['Records']:
        order = json.loads(record['body'])
        
        # 在庫確認・更新
        update_inventory(order)
        
        # 支払い処理
        process_payment(order)
        
        # 配送手配
        schedule_shipping(order)

シーン 2:ビデオトランスコーディング

# Producer: アップロード完了時
def on_video_uploaded(event):
    sqs.send_message(
        QueueUrl=os.environ['TRANSCODE_QUEUE_URL'],
        MessageBody=json.dumps({
            'video_id': event['video_id'],
            's3_key': event['s3_key'],
            'formats': ['720p', '1080p', '4k']
        })
    )

# Consumer: ECS ワーカー
def worker_loop():
    while True:
        response = sqs.receive_message(
            QueueUrl=os.environ['TRANSCODE_QUEUE_URL'],
            MaxNumberOfMessages=1,
            WaitTimeSeconds=20
        )
        
        for msg in response.get('Messages', []):
            job = json.loads(msg['Body'])
            
            # MediaConvert API 呼び出し
            transcode_job_id = trigger_mediaconvert(job)
            
            # 완료 대기
            wait_for_completion(transcode_job_id)
            
            # 削除
            sqs.delete_message(
                QueueUrl=os.environ['TRANSCODE_QUEUE_URL'],
                ReceiptHandle=msg['ReceiptHandle']
            )

シーン 3:マイクロサービス SAGA

# Order Service: イベント発行
def create_order(order):
    sqs.send_message(
        QueueUrl=order_queue_url,
        MessageBody=json.dumps(order),
        MessageGroupId=f"order:{order['order_id']}"
    )

# Payment Service: イベント購読
def payment_consumer():
    while True:
        response = sqs.receive_message(QueueUrl=payment_queue_url, ...)
        for msg in response.get('Messages', []):
            order = json.loads(msg['Body'])
            
            try:
                process_payment(order)
                
                # 支払い成功イベント発行
                sqs.send_message(
                    QueueUrl=inventory_queue_url,
                    MessageBody=json.dumps({'status': 'payment_complete', ...})
                )
                
                sqs.delete_message(...)  # 削除
            except PaymentError:
                # 支払い失敗 → DLQ で隔離
                # → 手動確認後リトライ
                pass

導入ロードマップ

Phase 1:PoC(1-2 週間)

  1. SQS キュー作成(Console)
  2. Producer / Consumer 実装(boto3)
  3. ロカール環境でテスト
  4. Lambda Event Source Mapping 試行

Phase 2:パイロット運用(1-3 ヶ月)

1. 本番環境キュー構築
2. DLQ + CloudWatch Alarm 設定
3. Lambda ESM + Partial Batch Response 実装
4. Consumer Lag Monitoring 導入
5. コスト最適化(ロングポーリング)

Phase 3:本番化(3-6 ヶ月)

  1. SNS + SQS Fan-out パターン実装
  2. FIFO キューの本番運用
  3. EventBridge Pipes 統合(新サービス向け)
  4. Disaster Recovery テスト

Phase 4:スケーリング(6-12 ヶ月)

  1. FIFO High-Throughput Mode への移行
  2. Per-Message Filtering 導入
  3. 複数リージョンへの展開
  4. Kafka との住み分け検討

実装チェックリスト

設計

  • [ ] キュータイプを決定(Standard / FIFO / High-Throughput)
  • [ ] 可視性タイムアウトを設定(処理時間 × 1.5 倍)
  • [ ] DLQ を設定(maxReceiveCount: 3)
  • [ ] メッセージ設計(< 256 KB、自己完結)
  • [ ] ロングポーリング(WaitTimeSeconds: 20)を決定

構築

  • [ ] SQS キュー作成(Console / IaC)
  • [ ] DLQ キュー作成 + Redrive Policy 設定
  • [ ] IAM Role / Policy 設定
  • [ ] KMS 暗号化設定(本番環境)
  • [ ] CloudWatch Alarm 設定

開発

  • [ ] Producer ライブラリ選定・実装
  • [ ] Consumer ライブラリ選定・実装
  • [ ] ChangeMessageVisibility 実装(長時間処理)
  • [ ] Error Handling / DLQ ロジック
  • [ ] Unit / Integration テスト作成
  • [ ] ローカル環境での動作確認(LocalStack / Moto)

運用

  • [ ] Consumer Lag Monitoring 設定
  • [ ] DLQ メッセージ アラート設定
  • [ ] 定期的な DLQ 確認・修正プロセス
  • [ ] キャパシティプランニング(スループット / Retention)
  • [ ] ロードテスト(ピークスループット検証)
  • [ ] Disaster Recovery 計画・テスト

まとめ

Amazon SQS は、非同期メッセージング・スパイク耐性・疎結合 の実現を目指すシステムの標準サービスです。シンプルな API・自動スケーリング・フルマネージド によって、インフラ管理を最小化しながら、エンタープライズグレードの信頼性を備えます。

2025-2026 年の最新動向として:

FIFO High-Throughput Mode:順序 + 高スループットの融合
Per-Message Filtering:Consumer 側負荷削減
EventBridge Pipes 統合:Serverless ETL パイプライン
Lambda Advanced Batching:低レイテンシ・高スループット両立

SQS は、Kafka ほどの複雑性は不要だが、信頼性・スケーラビリティが必須なユースケースで、最適な選択肢です。


参考文献

公式リソース

  1. AWS SQS Developer Guide https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/

  2. SQS API Reference https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/

  3. SQS Best Practices and Recommendations https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/best-practices.html

  4. AWS Lambda Event Source Mapping https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html

  5. Amazon EventBridge Pipes https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-pipes.html

  6. SQS Pricing https://aws.amazon.com/sqs/pricing/

  7. AWS Well-Architected Framework:Operational Excellence https://docs.aws.amazon.com/wellarchitected/

  8. AWS SDK for Python (Boto3) - SQS https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sqs.html

関連 AWS サービス

  1. AWS SNS - Fan-out パターン統合 https://aws.amazon.com/sns/

  2. AWS Lambda - Event Source Mapping https://aws.amazon.com/lambda/

  3. Amazon CloudWatch - Monitoring & Alerting https://aws.amazon.com/cloudwatch/

  4. AWS EventBridge - Event-Driven Architecture https://aws.amazon.com/eventbridge/

ストリーミング・キューイング比較

  1. Apache Kafka Documentation https://kafka.apache.org/

  2. Apache Kafka Message Queue (Queues for Kafka / KIP-932) https://kafka.apache.org/42/design/design/

  3. CNCF CloudEvents Specification https://cloudevents.io/

  4. AsyncAPI Specification - Async API Design https://www.asyncapi.com/

  5. AWS Compute Blog - Messaging & Integration https://aws.amazon.com/blogs/compute/

  6. Serverless Land - SQS Patterns & Samples https://serverlessland.com/patterns


最終更新:2026-04-26
対応バージョン:AWS SQS 2026 Q2 リリース
行数:1,700+ 行 / Mermaid 図:3 個 / 比較表:8+ 個 / 公式 URL:18+