Q88 — AWS DVA-C02 第2章
第 88/100 問 | ← 第2章
開発者がAWS Lambda関数を使用して、Amazon S3バケットにアップロードされた個人用画像からサムネイルを生成しています。`/original/` S3プレフィックス下に保存された個人用画像に対して、自動的にLambda関数が呼び出されます。開発者は、一部の画像でLambda関数がタイムアウトすることに気づきました。開発者は、画像サイズを調整する別のLambda関数を用いて、フォールバック機構を実装したいと考えています。 この要件を最小限の開発作業で満たす解決策はどれですか?
- A. 画像サイズ調整Lambda関数を、サムネイル生成Lambda関数の失敗イベント処理ターゲットとして設定する。
- B. Amazon Simple Queue Service(Amazon SQS)キューを作成する。SQSキューを、サムネイル生成Lambda関数の失敗条件のターゲットとして設定する。画像サイズ調整Lambda関数を、SQSキューからポーリングするように設定する。 ✓
- C. サムネイル生成Lambda関数を呼び出し、画像サイズ調整Lambda関数をフォールバックとして使用するAWS Step Functionsステートマシンを作成する。S3バケット内のイベントと一致するAmazon EventBridgeルールを作成し、そのルールでステートマシンを呼び出す。
- D. Amazon Simple Notification Service(Amazon SNS)トピックを作成する。SNSトピックを、サムネイル生成Lambda関数の障害条件のターゲットとして設定する。画像サイズ調整Lambda関数をSNSトピックにサブスクライブさせる。
正解: B. Amazon Simple Queue Service(Amazon SQS)キューを作成する。SQSキューを、サムネイル生成Lambda関数の失敗条件のターゲットとして設定する。画像サイズ調整Lambda関数を、SQSキューからポーリングするように設定する。
解説
SQSキューを中継として使用:SQSキューは、サイズ調整が必要な画像リクエストをキューイングするための非結合メカニズムとして機能します。これにより、サムネイル生成Lambda関数がタイムアウトやその他の理由で失敗しても、リクエストが失われることはありません。 障害処理:サムネイル生成Lambda関数をSQSキューのターゲットとして設定することで、Lambda関数が失敗した場合、メッセージはキューに戻され、再処理を待機します。これにより、障害が発生しても最終的にすべての画像処理リクエストが完了することを保証できます。 画像サイズ調整Lambda関数:このLambda関数をSQSキューからポーリングするように設定します。つまり、キューから画像処理リクエストを取得し、画像サイズの調整を担当します。この設計により、障害によるデータ損失やリクエスト破棄を防ぎながら、すべてのリクエストを効率的に処理できます。 他の選択肢を排除する理由: 選択肢A:画像サイズ調整Lambda関数を失敗イベントのターゲットとして設定しても、サムネイル生成Lambda関数のタイムアウト問題を直接解決せず、明確なキューイングや障害処理メカニズムも提供しません。 選択肢C:AWS Step Functionsは複雑なワークフローの作成に適していますが、本ケースでは単純なキュー処理および障害復旧に特化したSQSの方が過剰かつ不必要です。 選択肢D:SNSは通知およびイベントの配信には有効ですが、キューイング機能を提供せず、障害処理メカニズムとしても不適切です。 したがって、選択肢Bが最適であり、最小限の開発作業でサムネイル生成Lambda関数のタイムアウト要件を満たし、信頼性の高い障害復旧機構を提供します。