開発者がAmazon EventBridgeを使ってイベント駆動アーキテクチャを構築しています。EC2インスタンスの状態変化イベントを受信し、ステータスが「stopped」の場合のみLambda関数をトリガーしたいと考えています。最もコスト効率が高く適切なアプローチはどれですか?
正解: EventBridgeルールのイベントパターン(event pattern)に detail.state: ["stopped"] の条件を含めて定義し、Lambdaをターゲットに設定する。 EventBridgeルールのイベントパターンでイベントの詳細条件を指定できます。EC2状態変化イベントはdetail.stateフィールドにステータスが格納されるため、{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"],"detail":{"state":["stopped"]}}のようなパターンを定義することで、stopped状態のイベントのみターゲットのLambdaに送信されます。 選択肢Aの全EC2状態変化イベントでLambdaをトリガーし、Lambda関数内でstate値を確認して処理を分岐する方法は不要な呼び出しが発生しコスト非効率です。 選択肢CのCloudWatch Logsのメトリクスフィルターを使用してEC2の停止イベントを検知する方法はEC2イベント検知には不適切です。 選択肢DのSNSトピックを経由させる方法はEventBridgeルールでのフィルタリング機能を活用していません。