DEA / ドメイン1 データの取り込みと変換

Amazon SNS と Amazon SQS (通知とバッファ)

概要

(Simple Notification Service) は、1つのメッセージを複数の購読者へ一斉に送る通知サービスです。 (Simple Queue Service) は、メッセージを一時的にためておき、受け手が自分のペースで取り出すキューです。データパイプラインでは、SNS で成功・失敗のアラートを送り、SQS で処理の負荷を平準化します。


主要技術

① SNS によるパイプラインのアラート

の、 のルール ( ジョブの FAILED、 の実行失敗など)、Step Functions の Catch から トピックへ送り、メール、、、 などの購読者へ届けます。担当者への通知は SNS、と覚えます。購読ごとにポリシーを設定すると、メッセージの属性 (例: severity が critical) に一致したものだけをその購読者へ届けられます。

② SQS による負荷の平準化

取り込みが急増しても、メッセージを にためておけば、 や処理側は追いつける速さで取り出せます。 (受信したメッセージを他の受け手から隠す時間) は、処理にかかる時間より長く設定します。順序と重複排除が必要なら キューを使います。FIFO キューの重複排除は5分の間隔の中で同じ重複排除 ID を除くもので、 から FIFO キューへ配るには FIFO トピックが必要です (標準トピックは FIFO キューへ配信できません)。 から SQS へ直接送り、Lambda のイベントソースマッピングの最大数で取り出す速さを抑えると、ピークの受信を失わずに下流のデータベースを守れます。

③ DLQ

何度処理しても失敗するメッセージは、最大受信数 (maxReceiveCount) を超えた時点で へ移し、原因を調べてから元のキューへ戻します。DLQ のメッセージ数に のを設定し、 で知らせます。アラームには ApproximateNumberOfMessagesVisible を使います。NumberOfMessagesSent は、最大受信数を超えて自動で DLQ へ移ったメッセージを数えないため、DLQ の監視には向きません。

④ SNS → SQS のファンアウト

1つの トピックに複数の キューを購読させると、同じイベントを複数の処理 (たとえば集計用と用) へ独立して配れます。各キューが自分の速さで処理でき、片方の停止がもう片方に影響しません。


試験対策

① 選択基準

「失敗したら担当者にメールで知らせる」は 、「急増する取り込みを処理側の速度に合わせる」は 、「同じイベントを複数の処理へ独立に配る」は SNS → SQS のを選びます。

② 混同しやすい点

は通知の仕組みではなく、受け手が取り出しに来るまでメッセージを保持するキューです。逆に は届けることが役割で、受け手が取り出しに来るまでためておく仕組みではありません。受け手が止まっている間のデータを守りたい場合は、SNS の後ろに SQS を置きます。


参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください