IT資格マップ
DVA-C03 練習問題5:SQSのバッチで失敗した1通だけ再試行する
DVA-C03の練習問題5です。SQSをLambdaで処理するとき、バッチのうち失敗した1通だけを再試行させる設定を、四択で解きます。
AWS Developer(DVA-C03)
AWS DVA-C03 オリジナル問題 5
人が全選択肢を確認済み(AI 作成)
AI が一次情報をもとに作成し、人がすべての選択肢を確認しました(確認)。
根拠(Amazon Web Servicesの公開資料の要約):SQS のイベントソースマッピングで部分的なバッチ応答を有効にすると、失敗したメッセージの ID だけを返して再試行できる。根拠の資料を開く
Amazon Web Services、AWS は、Amazon.com, Inc. またはその関連会社の商標です。当サイトはAmazon Web Servicesと提携・公認の関係にありません。この問題は当サイトが独自に作成したもので、実際の試験の問題ではありません。
根拠の資料と食い違う点があれば、資料が優先です。解説文は検証の対象外です。品質方針
Amazon SQS のキューを、バッチサイズ10で AWS Lambda に処理させています。1通のメッセージの処理に失敗すると、バッチの10通がすべて再処理され、成功した9通も重複して処理されてしまいます。スループットのためバッチサイズは10のまま、失敗した1通だけを再試行させたいと考えています。最も適した方法はどれですか。
答えと選択肢ごとの根拠を見る
正解:エ(イベントソースマッピングで ReportBatchItemFailures を有効にし、関数が失敗したメッセージの ID を batchItemFailures として返す。) 当サイトの解答
ア × 誤り 再処理の単位が小さければ、よいと考えた
重複は減りますが、バッチサイズを10のまま保つという条件に反します。スループットも下がります。
イ × 誤り 待ち時間を伸ばせば、失敗した分だけが再処理されると考えた
可視性タイムアウトは、再び見えるようになるまでの待ち時間です。どのメッセージを再処理するかは変えません。
ウ × 誤り 関数の設定で、失敗の単位を変えられると考えた
タイムアウトを延ばしても、1通の失敗でバッチ全体が再試行される動きは変わりません。
エ ○ 正しい
部分的なバッチ応答を有効にすると、返された ID のメッセージだけがキューに残って再試行されます。バッチサイズは変えずに済みます。
解説を開く
解説
答えはウ:部分的なバッチ応答
既定では、バッチの処理が失敗すると、バッチ全体が再処理の対象です。ReportBatchItemFailures を有効にして、失敗したメッセージの ID を応答で返すと、成功したメッセージは削除され、失敗した分だけが再試行されます。
この問題は、試験ガイドの分野「Development with AWS Services」にあたります。当サイトが作った問題で、公式のサンプル問題とは別です。
誤答は何を取り違えているか
アは条件に反し、イとエは、再処理の単位を変えません。
似た問題を解くときの手がかり
この設定にしても、同じメッセージが2回届くことはありえます。処理は、同じメッセージを2回受けても結果が変わらない作り(冪等)にしておきます。
参考にした資料
Amazon Web Services(確認)