11
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Qiita史上最多記録をつくろう!アウトプットはいいぞカレンダーAdvent Calendar 2022

Day 11

AWS Lambdaでnode_modulesを使う時のメモ

Last updated at Posted at 2022-12-10

AWS LambdaでNode.jsを使っていた時にnode_modulesにあるライブラリを使おうとした時にちょっと詰まったので、備忘録として残そうと思います。

あとは、アドベントカレンダーに沿ってアウトプットの大切さを書きます。

node_modulesの導入

前提条件

  • npm コマンドが使える環境があること
    • ローカルマシンでも問題ありません

簡単な流れ

  1. ディレクトリの用意
  2. 必要なライブラリをインストール
  3. ディレクトリのzip化
  4. レイヤー登録
  5. Lambda関数でレイヤー追加
  6. Lambda関数のコードでライブラリを読み込む

ディレクトリの用意

初っ端から一番大事です。作成する場所はどこでも良い(ローカルマシンでも可)ですが、ディレクトリの名前が重要です。
「nodejs」という名前のディレクトリを生成します。

$ mkdir nodejs

これについてはドキュメントにあります。

必要なライブラリをインストール

生成したディレクトリの中で、コマンドを叩いてライブラリをインストールします。

$ cd nodejs
$ npm i <ライブラリ名>

ここで、一旦nodejsディレクトリからの構成を見直してみます。
以下のようになっていれば大丈夫です。

nodejs/node_modules/<ライブラリ名>

ディレクトリのzip化

nodejsディレクトリをzip化します。
生成するzipファイルの名前は何でもいいです。
windowsならコマンドなくてもzip生成できますが、できない環境の場合はコマンドでzip化します。

$ zip -r lib.zip ./nodejs

レイヤー登録

生成したzipをAWS Lambdaのレイヤーに登録します。

左側のメニューから「レイヤー」を選択
スクリーンショット1.png

「レイヤーの作成」を選択
スクリーンショット2.png

必要な情報を入力します。好きな名前をつけて問題ありません。
「アップロード」のボタンで生成したzipファイルをアップロードします。
ライブラリが多くて、zipが10MBを超える場合はS3を使用すると良いみたいです。
スクリーンショット3.png

Lambda関数でレイヤー追加

Node.jsランタイムのLambda 関数を編集する画面の一番下に、レイヤーを設定する箇所があります。
「レイヤーの追加」を選択します。

スクリーンショット4.png

レイヤーソースは「カスタムレイヤー」を選択します。
ドロップダウンから、登録したレイヤーを選んで「追加」を押せば完了です。
スクリーンショット5.png

Lambda関数のコードでライブラリを読み込む

レイヤーの追加までできれば、コードから読み込むことができます。
これで終了です!お疲れ様でした!

const HOGE = require('<ライブラリ名>');

アウトプットする理由

ここからはアウトプットの良さについて語っていきます。

個人的に一番大きいのは、自分の中で情報を整理し、保存することが出来るところだと思います。

今回私は、AWS Lambdaを使用する上で詰まって解決したところを記事としてまとめました。
対応している最中は、手探りで試行錯誤を繰り返しています。
つまり、様々な情報がごちゃまぜの状態です。

解決方法が見つかったとしても、このままアウトプットしなかった場合はどうなるか。
おそらくそのまま忘れて、次回似たような事が起こった時にまた同じことを調べると思います。

当時自分が書いたコードも、数カ月後に見れば「誰だこのクソコードを書いたのは?」と感じるように人間はすぐに忘れる生き物です。

では今回のように、Qiitaに記事として投稿したとします。
記事として多くの人に見てもらうので、記事の書き方を考えるでしょう。
(この「多くの人」というのは未来の自分自身も含まれます)

どうすれば今回の問題をわかりやすく伝えられるか、誤解を生まない文章はなにか、なにをしたら解決できたのか。
これらを考えることで今回得た情報を整理します。ごちゃ混ぜ状態だった情報が整理される訳です。

情報を分かりやすく整理し、保存することで後から振り返ったり、より理解のある人から意見をもらえたりします。

意見の交流は自分の成長に大きく繋がります。
アウトプットで自分や、他の人の成長に繋がれば嬉しいですね。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?