概要
- lambdaのランタイムNode.js18にてbcryptアルゴリズムを使って値をハッシュ化する方法を簡単にまとめる。
前提
- npmコマンドが実行できる環境があること。(筆者はローカルのMacにVoltaを使ってNode.js18を入れている。)
方法
-
npmコマンドが実行できる環境で下記のコマンドを実行しnodejsディレクトリを作成し、移動し、npm init -yを実行する。
mkdir nodejs cd nodejs npm init -y
-
下記コマンドを実行してbcryptjsをインストールする。
npm install bcryptjs
-
下記コマンドを実行してnodejsディレクトリをzip化する。
cd ../ zip -r nodejs.zip nodejs
-
ランタイムNode.js18で、x86_64アーキテクチャでlambda関数を作成する。
-
lambdaのページのサイドバーで「レイヤー」をクリックする。
-
「レイヤーの作成」をクリックする。
-
下記の様に設定して「作成」をクリックする。
- 名前: 任意のわかりやすい名前でOK
- アップロード種別: zipファイルをアップロードを選択
- zipファイルのアップロード: 「アップロード」をクリックし先程zip化した「nodejs.zip」を選択してアップロード
- 互換性のあるアーキテクチャ: x86_64を選択
- 互換性のあるランタイム: Node.js18を選択
-
当該lambda関数の関数の概要の「Layers」をクリックする。
-
「レイヤーの追加」をクリックする。
-
レイヤーソースで「カスタムレイヤー」を選択し、プルダウンから先に作成したレイヤーを選択し、「追加」をクリックする。
-
下記の内容をlambdaのコードに記載する。
index.mjsimport bcrypt from "bcryptjs"; let hashed = bcrypt.hashSync('hogefuga', 8); console.log(hashed); export const handler = async(event) => { // TODO implement const response = { statusCode: 200, body: JSON.stringify('Hello from Lambda!'), }; return response; };
-
lambda関数のHello-Worldなどのテストを作成し、lambda関数を実行する。
-
出力された文字列の中に、下記の様にハッシュ化された文字列が出力されれば完了である。
undefined INFO $2a$08$JaBQnnj9aLXx/N1nZuPf1uzIgwnOVJAr1hsLXvGRYNqZQ5kL4L/KG
参考文献