1
0

More than 3 years have passed since last update.

今のプロジェクトで使っているライブラリを簡単にLambdaレイヤーに登録する方法

Posted at

困ったこと

Lambdaで外部ライブラリを利用する場合、Lambdaにコードをアップロードするときに一緒にアップロードする必要があります。
さらに、Lambdaには一つ50MBまでという制約もあり、ライブラリによってはそれ単体で50MBを超える場合もあったりするので、そもそもアップロードできない!ということにもなる場合があります。私はPuppetierをLambdaで利用しようとしたときにこの問題に引っかかりました。(Puppetierは内部でヘッドレスChromeを使っているのでサイズが大きい)

解決策

Lambdaレイヤーを使うことにより、この問題を解決することができました。

ただ、Lambdaレイヤーのアップロードはコンソールを使う場合は、まずローカルでZipファイルを作ってそれをアップロードするという手順を取るのですが、これを毎回やるのは面倒なので、簡単なシェルを作って簡単にアップロードできるようにしました。

以下のシェルをプロジェクトルートディレクトリに置いておき、Lambdaレイヤーを更新する際はこれを実行すればOKというわけです。便利!

このシェル内ではaws cliを使っていますので、aws cliをインストールしてから実行する必要があります。

lambda-layer-upload.sh
## 直下にあるnode_moduleをzip化する。
mkdir lambda_layer
cp -r node_modules lambda_layer
zip -r lambda_layer.zip lambda_layer
rm -rf lambda_layer

## 作ったzipファイルをレイヤーとしてアップロードする。
aws lambda publish-layer-version --layer-name my-lambda-layer --description "my lambda layer" --license-info "MIT" --zip-file fileb://lambda_layer.zip --compatible-runtimes nodejs10.x nodejs12.x

誰かの参考になれば幸いです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0