LoginSignup
3
5

More than 3 years have passed since last update.

node_modulesをLambdaレイヤーにアップロードしてライブラリを使用する

Posted at

経緯

  • 同じライブラリを使用しているLambda関数が増えた
  • コンソール画面からコードを編集できるようにしたい
  • 上記の理由から、layerに共通ライブラリを登録し、それを読み込ませることでLambda関数を軽量化する

環境

  • ローカルOSはWindows10(Macでもで順は同様)
  • LambdaはNode.jsを使用

node_modules準備

  • 『nodejs』という名前のフォルダを作成する

※名前がめちゃくちゃ大事です。layerはnodejs/node_modulesのフォルダ構成じゃないと読み込んでくれません(正確に言えばopt直下に生成されるのでopyt/nodejs/node_modulesとなりますが気にしなくて良いです)

① 新規で準備する場合

→作ったフォルダ直下にnode_modulesを作成

npm install 必要なライブラリ名

② すでにnode_modulesフォルダが有る場合

→node_modulesフォルダを先程作ったnodejsフォルダに移動する

  • nodejsフォルダをzip化する

Lambdaレイヤーの作成

  • AWS Lambdaのレイヤーから「レイヤーの作成」をクリック

SnapCrab_NoName_2020-7-15_13-7-27_No-00.png

  • 名前を入力
  • 先程zip化したフォルダをアップロード
  • ランタイムを選択(今回はNode.jsを選択)
  • 「作成」ボタンをクリック

SnapCrab_NoName_2020-7-15_13-10-2_No-00.png

これでレイヤーは完成です

Lambda関数への適用

  • 適応するLambda関数の「設定」→「デザイナー」→「Layers」を選択し、下の「レイヤー」→「レイヤーの追加」をクリック

SnapCrab_NoName_2020-7-15_13-16-44_No-00.png

  • 名前とバージョンを先程作ったレイヤーに設定(新規で作った場合はバージョン1です)

SnapCrab_NoName_2020-7-15_13-21-10_No-00.png

  • 各関数からレイヤーに上げたモジュールを削除する

これでパッケージとして動いていた時と同じ動作をするはずです

3
5
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
3
5