概要
ピンポイントでやりたいことだけがまとまっている記事がなかったので、メモとして作成
AWS Lambda Layersでライブラリを共通化 という記事のやり方とほぼ一緒なのですが、 自作ソースを一切含めずに pip install
される module だけを lambda 上で使い回したい場合 の方法を探しても見つけられなかったので、記事化。
(私が何回も使いたいので!)
手順
1. modules を zip にまとめる
$ mkdir python
# 他にも欲しい module があれば、全部 python ディレクトリに入れておく
$ pip install module_name -t ./python
# pythonディレクトリの中身を layer.zip へと圧縮
$ zip -r layer.zip python/
2. S3にアップロード
S3のバケットは先に作っておく
(1) GUIで行う場合
GUIのAWSコンソールでアップロードするのは簡単なので、省略
(2) コマンドラインで行う場合
ファイルサイズが大きい時や、通信回線が貧弱な時(!)は、コマンドライン経由でアップロードしないと失敗する
aws-cli v2 をインストールしておき、その上で以下のコマンドを実行
# backet名を確認
$ aws s3 ls
2019-05-07 19:04:54 xxxxxxxxxxxxx # <= バケット名
# s3へのupload実行
# aws s3 cp アップロードしたいファイル名 バケット名
$ aws s3 cp ./layer.zip s3://xxxxxxxxxxxxx
待つ( ˘ω˘)スヤァ
3. layersを作成
4. lambda関数からlayerを呼び出す
3, 4 については、先ほど概要で紹介した記事の、 Lambda関数にLayerを追加する 以降の通りにすれば大丈夫でした。
(雑ですみません。記事を作成して下さった @t_okkan さん本当にありがとうございます!)