SAP-C02新しいソリューションのための設計HARD単一選択

ある企業が AWS 上でイベント駆動のデータ処理パイプラインを設計しており、処理の冪等性(Idempotency)を保証する必要があります。同じメッセージが複数回処理された場合でも、結果が同一になることが必要です。Lambda 関数が SQS からメッセージを受信して DynamoDB にデータを書き込む処理で、ネットワーク障害によるリトライ時に重複書き込みが発生しています。最もエレガントに冪等性を実装するには、どの方法が適切ですか?

  1. A. AWS Lambda の冪等性サポート(Powertools for Lambda の Idempotency モジュール)または DynamoDB の条件付き書き込み(attribute_not_exists)を使用する。メッセージの一意識別子(MessageId)を DynamoDB のキーとして使用し、条件付き書き込みで既に処理済みのメッセージをスキップする
  2. B. SQS の可視性タイムアウトを長くして、同じメッセージが複数の Lambda に同時処理されないようにする
  3. C. SQS FIFO キューを使用してメッセージの順序を保証し、重複を防ぐ
  4. D. Lambda 関数をシングルトンとして実行し、同時実行数を 1 に制限する
解答と解説を見る

正解: A

DynamoDB の条件付き書き込み(attribute_not_exists(pk))はアイテムが存在しない場合のみ書き込みを成功させ、既に処理済みの場合はエラー(ConditionalCheckFailedException)を返します。SQS MessageId を冪等性キーとして使用することで、同じメッセージが再処理されても重複書き込みを防げます。AWS Powertools for Lambda の Idempotency モジュールはこのパターンを実装するライブラリを提供します。 B: 可視性タイムアウトを長くすると同時処理は減りますが、タイムアウト後に再度表示されるため根本的な重複処理を防ぎません。 C: SQS FIFO のメッセージ重複排除(MessageDeduplicationId)は 5 分のウィンドウ内での重複のみを防ぎます。5 分以降や Lambda のリトライには対応していません。 D: 同時実行数 1 への制限はスケーラビリティを完全に失い、高スループット要件を持つシステムには適していません。

▸ この試験を本気で演習する(全150問・無料)