AWS lambdaでAthenaをETLする環境構築

技術

AWS lambdaでAthenaを実行する際boto3での実行はデフォルトで可能だが、dataframeでの加工や処理を行いたくなるケースがある。
自前でレイヤーを作る方法は以前にも紹介したが、いくつかハマったポイントがあったのでメモ。

カスタムレイヤーの上限は総計250MBまで

これは実際に作ってみて気づいた。まずlambdaのカスタムレイヤー作成に上限がある。
上限が256MBでこれを超過すると以下のエラーが表示される。

Unzipped size must be smaller than 262144000 bytes

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-limits.html

ちなみにこれは、1つレイヤーはもちろんのこと、lambdaに登録するレイヤーサイズの総量でもある。
例えば、レイヤーAが200MB、レイヤーBが100MBの場合、レイヤーAB両方を1つのジョブに含めることができない。

なので、必要最小限のライブラリのみでカスタムレイヤーを作成することが望ましい。

awswranglerを使う

Athenaテーブルを用いて、Athenaテーブルを作成する際、awswranglerを用いるとパーティション の上書きが可能になる。

このライブラリを利用する場合、awswranglerをインストールする必要があるが、自前でカスタムレイヤーを作成すると300MBを超えてしまっていてアップロードができなかった。

どうやら公式のリリースノートに軽量版のawswranglerがあり、それをアップロードすることで導入は可能。

https://github.com/aws/aws-sdk-pandas/tags

ただし、200MBを超えているので、組み合わせには注意が必要。
pandasやnumpyといったライブラリは内包されている。

コメント

タイトルとURLをコピーしました