AWS Lambdaのレイヤーを使ってnode_modulesとLambdaを分離する方法

AWS Lambdaのレイヤーを使ってnode_modulesとLambdaを分離する方法

Lambdaにレイヤーという機能が追加されていました。

AWS Lambda レイヤー

/opt配下からレイヤーが使えるようです。ちなみに/tmpも使えます。

レイヤーは共通ライブラリなどを作成しておいて、全てのLambdaから/opt配下のレイヤーを呼び出せるといった感じでしょうか。

Layerはローカル環境で作成してzip圧縮してLayerに上げるかS3から上げるかのどちらかしか現時点ではないようです。いずれエディタが出てきそうです。

ローカル環境でLayer.jsというファイルを作成して7zipなどで圧縮してからアップロードします。

Layer.js

module.exports = {
getMessage: () => {
return 'hello world';
}
};

view raw
gistfile1.txt
hosted with ❤ by GitHub

AWS Lambdaのレイヤーを使ってみる

こんなデザイナーになりますのでLayerをクリックします。

レイヤーが表示されるので「レイヤーの追加」をクリックします。

AWS Lambdaのレイヤーを使ってみる

レイヤーを選択し、「追加」をクリックします。

AWS Lambdaのレイヤーを使ってみる

Lambdaでレイヤーを読み込みます。

const layer = require('/opt/Layer'); // レイヤーのLayer.jsファイルを読み込み
exports.handler = async (event) => {
const response = {
statusCode: 200,
body: layer.getMessage() // ここでレイヤーで定義した関数を使っている
};
return response;
};

view raw
gistfile1.txt
hosted with ❤ by GitHub

こんな感じで使えます。最大5つのレイヤーが使えるようです。

node_modulesとLambdaを分離する

/opt配下にレイヤーが配置されるので、node_modulesをレイヤーにして、Lambdaと分離することができます。

pathが通っているので、nodejsというフォルダでlayerを作成する必要があるようです。

node.jsのpath
nodejs/node_modules
nodejs/node8/node_modules

このようにnode_modulesをレイヤーにすることによってLambdaのサイズが小さくすることができます。Lambdaのサイズが大きくなるとマネジメントコンソール上での編集が不可になったり、zip圧縮してもデプロイできなくなったりするので、Lambdaは軽いサイズにしておくほうが良いです。

スポンサーリンク
  • このエントリーをはてなブックマークに追加
  • Evernoteに保存Evernoteに保存
スポンサーリンク

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA