IoTデバイスからのセンサーデータをAmazon Data Firehoseで受信し、Amazon S3に保存しています。各レコードにはdevice_typeフィールドとregionフィールドが含まれており、Amazon Athenaでのクエリパフォーマンスを向上させるため、S3への書き込みパスを '/data/device_type=<値>/region=<値>/' の形式でパーティション分けしたいと考えています。追加のAWSサービスをできるだけ使わずに実現する最も効率的な方法はどれですか?
Amazon Data Firehoseの動的パーティショニング(Dynamic Partitioning)機能を使うと、受信レコードのフィールド値に基づいてS3への書き込みプレフィックスを動的に変更できます。JQクエリまたはInline Parsingでフィールドを抽出し、S3プレフィックスに組み込むことで、追加サービスなしにパーティション構造を実現できます。 選択肢BのLambda変換による実装は、Lambda内からS3へ直接書き込む設計はAmazon Data Firehoseの配信機能を迂回するアンチパターンであり、エラー処理やスケーリングも複雑になります。 選択肢Cの静的プレフィックス+Glueジョブは、全データが同一パスに書き込まれ、後続のGlueジョブによる再整理で追加コストと遅延が発生し、要件の「追加サービスを使わない」にも反します。 選択肢DのKinesis Data Streams+Glue Streaming ETLは、複数のサービスが必要でAmazon Data Firehose単体より複雑かつ高コストになります。