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といったライブラリは内包されている。
コメント