S3 Select できるのは1レコードあたり 1MB まで
S3 に格納されたログファイル(JSON形式)に対し、 S3 Select でレコードを取得しようとして怒られたので忘れないようにメモ。
ちゃんと書いてあるねんな。
Amazon S3 Select を使用するときは以下の制限が適用されます。
・SQL 式の最大長は 256 KB です。
・入力または結果のレコードの最大長は 1 MB です。
Amazon S3 Select が出力できるのは JSON 出力形式のみです。
そもそも、なんで1レコードに1MBも詰まってるのかというところを話すと、ログは一度 Kinesis Firehose で処理されて、そこから S3 に吐き出されるような作りになっていた。
Firehose 側の設定はバッファサイズが 5MB だったので、1行あたりに吐き出されるログが1MBを超えるケースが発生。
ちなみにどうやって対応したかというと、ログをローカルにDLして自前で読み取り・展開するようにした。
データ量とファイル数が多くなってくると辛いので、Athena や Redshift に移行したいところ。
( 2021/10 現在だと、athena を使う場合は firehose から lambda などを噛ませてログを整形する必要がある)