AWS Lambda LayersをNode.jsで使う方法をお伝えします。
細かい制約事項はAWS Documentに載っていますので参考にしてください。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html
今回作成する全体構成は次のようになります。
カッコ内は今回作成する関数の名前です。
Layer作成
まずLayerを作成します。
ローカルPC上の適当な所に下記のソースファイルを作成してください。
XpYamaLayer.js
module.exports = { getHello: () => { return 'hello'; } };
XpYamaLayer.jsをzipファイルに圧縮します(zipのファイル名は何でも大丈夫です)。
Layerのアップロード
AWS管理コンソールに入りLambdaの管理画面を開きます。
画面左のメニューに「Layers」という項目があるので開いてください。
「レイヤーの作成」ボタンからレイヤーの作成画面を開き、先ほど作成したzipファイルをアップロードします。
「互換性のあるランタイム」は「Node.js 8.10」を選択しておいてください。
「作成」ボタンを押してLayerの作成は完了です。
Lambdaの作成
node.js 8.10でLamda関数を作成します。
「Layers」の「レイヤーの追加」を押します。
先ほど作成したLayerを選択します。
XpYamaFuncを選択してLambdaのソースを書きます。
次のソースを貼り付けてください。
var XpYamaLayer = require('/opt/XpYamaLayer'); exports.handler = async (event) => { const response = { statusCode: 200, body: XpYamaLayer.getHello() }; return response; };
短いコードなので説明は省略します。
保存して実行(テスト)してみます。
テストイベントの設定が聞かれますが、イベントの内容は使わないので適当で大丈夫です。
正常に実行できると次のような結果になります。
XpYamaFuncの7行目「XpYamaLayer.getHello()」でLayerの関数を呼んでいるのが分かります。
最後に
LambdaでDBの接続情報なんかを扱う場合や、何かと共通的な処理が必要になることがあります。
Layerに入れておけば色々な所で参照できて便利なので、どんどん使ってみてください。