やりたいこと
CDK でAPIを作成しており、axiosを使ってAPIを叩けるようにしたい。
ただ axios は lambda の中に用意されていないライブラリなのでインポートする必要がある。
Lambda layers とは
Lambda で利用するライブラリを保存して利用可能にしてくれる AWS のサービスである。
これを活用することで axios が Lambda でも利用可能になる
他にもaxiosをLambdaで使う方法があるけどこれが便利
使い方
まずは Lambda Layer に保存するライブラリの保存箇所を作成する必要があります。
通常利用しているプロジェクトからlayer/nodejs
というディレクトリを作成し、そこにパッケージを一通り定義して保存します。
mkdir layer
cd layer
mkdir nodejs
cd nodejs
layer/nodejs
に移動したらyarn init
をしてプロジェクトを作成。そこでライブラリをインストールして保存します。
yarn init
yarn add --dev axios
その後Lambda関数のインスタンス化をしている箇所でlayersを定義。Lambda関数を作成します。
そうするとLambda関数でインストールしたライブラリが利用可能になります。
const func = new lambda.Function(context ,functionName, {
functionName: functionName,
runtime: lambda.Runtime.NODEJS_12_X,
// 下記追加
layers: [nodeModulesLayer],
});
###最後に
Youtubeチャンネルはじめてました!
エンジニアの姿は十人十色。
今後も色んなエンジニア像を捉えて、それを目指す人たちの参考になる動画を作っています。
あと、プログラミングもメンタで教えているので興味があったらみてください。