概要
ローカルPCで作成したランタイムNode.jsのプロジェクトファイルをzip化し、lambdaの処理に反映する方法を簡単にまとめる。
前提
ローカルPCでnpmコマンドが実行できること。
筆者はローカルPCのNode.jsのバージョン管理はVoltaを使用しており、Volta導入段階でnpmコマンドは実行できるようになった。
また、ランタイムはNode.js 20を使う。
方法
-
任意の場所にプロジェクトファイルを格納するディレクトリを作成する。
mkdir notice_slack_function cd notice_slack_function
-
下記を実行してローカルのNode.jsのバージョンを20系にする。
node -v volta install node@20 node -v volta list
-
下記を実行してNode.jsのプロジェクトを初期化する。(
-y
オプションは初期化時に問われる質問にデフォルトで「Y」つまり「YES」と応えるオブション)npm init -y
-
上記を実行する とプロジェクトファイルを格納するディレクトリ(今回でいうと
notice_slack_function
)のなかにpackage.jsonが作成される。 -
下記を実行して
notice_slack_function
のディレクトリ直下にindex.jsを作成する。touch index.js
-
index.jsを開き、下記のように記載し保存する。
notice_slack_function/index.jsexport const handler = async (event) => { // TODO implement const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda! hogehoge'), }; return response; };
-
下記を実行してプロジェクトファイルをzip化する。下記を実行すると、
notice_slack_function
ディレクトリの一つ上の階層にnotice_slack_function.zipが出力される。zip -r ../notice_slack_function.zip .
-
あとはlambda関数を用意し、「アップロード元」をクリック、「.zipファイル」をクリック、「アップロード」をクリックして先ほどzip化した 「notice_slack_function.zip」をアップロードする。
-
lambda側でhello worldテストを定義して実行すると下記のように返る。作業終了。