DVAAWSのサービスを使用した開発
在庫管理アプリケーションでDynamoDB Streamsを使ってLambda関数をトリガーしています。現在はすべてのDynamoDB変更でLambdaが呼び出されており、関数内でitemの`status`フィールドが'OUT_OF_STOCK'に変更されたレコードのみ処理しています。不要なLambda呼び出しを削減してコストを最適化したいです。最も適切な方法はどれですか?
ADynamoDBのCondition Expressionを使い、status='OUT_OF_STOCK'の場合のみレコードを書き込むよう制限する
(Condition Expression)は、書き込み操作の条件を制御するものであり、Streamsに流れるイベント自体をフィルタリングする機能はありません。
BLambdaのイベントソースマッピングにフィルタリングを設定し、statusがOUT_OF_STOCKのイベントのみ処理させる
✓ 正解
LambdaのイベントソースマッピングにはEvent Filtering(イベントフィルタリング)機能があり、DynamoDB Streamsのイベントを属性値に基づいてフィルタリングできます。条件に一致しないイベントはAWSサービス側でスキップされLambdaが起動しないため、不要な呼び出しを削減しコストを最適化できます。
CDynamoDB DAXを導入してストリームイベントをインターセプトし、条件に合うもののみSQSに転送する
(DynamoDB DAX)は、DynamoDB読み取りのインメモリキャッシュであり、DynamoDB Streamsイベントをインターセプトしたり条件付きでSQSへ転送する機能は持ちません。
DLambda関数の予約済み同時実行数を低く設定して不要な呼び出しを制限する
(Lambda 予約済み同時実行数)は、呼び出し自体を削減できず、スロットリングエラーが増えるだけで、不要な呼び出しの削減にはなりません。
解説
LambdaのイベントソースマッピングにはEvent Filtering(イベントフィルタリング)機能があり、DynamoDB Streamsのイベントを属性値に基づいてフィルタリングできます。条件に一致しないイベントはAWSサービス側でスキップされLambdaが起動しないため、不要な呼び出しを削減しコストを最適化できます。
選択肢A(Condition Expression)は、書き込み操作の条件を制御するものであり、Streamsに流れるイベント自体をフィルタリングする機能はありません。
選択肢C(DynamoDB DAX)は、DynamoDB読み取りのインメモリキャッシュであり、DynamoDB Streamsイベントをインターセプトしたり条件付きでSQSへ転送する機能は持ちません。
選択肢D(Lambda 予約済み同時実行数)は、呼び出し自体を削減できず、スロットリングエラーが増えるだけで、不要な呼び出しの削減にはなりません。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →