あるデータエンジニアリングチームは、Amazon Data Firehoseを使用してストリーミングデータをAmazon S3に配信しています。配信ストリームにはAWS Lambdaを使用したデータ変換処理が設定されており、一部のレコードがLambdaの変換処理中にエラーとなっています。 チームは以下の要件を最小限の追加実装で満たしたいと考えています。 ・変換に成功したレコードは通常どおりS3に配信し続ける ・変換に失敗したレコードは別のS3プレフィックスに保存し、後続の調査・再処理に使用する 最も適切な方法はどれですか?
Amazon Data Firehoseは、Lambda変換で処理できなかったレコードをS3の「エラー出力プレフィックス」に自動書き込みする機能をネイティブで持っています。コンソールまたはCloudFormationで設定するだけで追加実装なしに要件を満たせます。成功レコードと失敗レコードを異なるS3プレフィックスに振り分けられるため、後続の調査・再処理パイプラインの構築も容易です。 選択肢AのSQS DLQはLambdaの非同期呼び出しに有効ですが、FirehoseはLambdaを同期的に呼び出すためDLQは機能せず、追加のLambda実装も必要になります。 選択肢CのEventBridgeとLambdaの組み合わせは構成が複雑になり、失敗レコードの内容を正確に復元するのが難しい場合もあります。 選択肢Dのバッファリングやタイムアウトの調整はパフォーマンスチューニングであり、変換ロジックのエラーへの対処にはなりません。