やったこと
AWS公式のLambdaチュートリアルをベースに、画像変換ライブラリ"sharp"の依存関係を、Lambda Layersに切り出してみました。
Lambda Layersを使用することで、Lambda関数をマネジメントコンソール上で改修できるので便利ですね。
- チュートリアル: Amazon S3 で AWS Lambda を使用する
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example.html
※補足
チュートリアルでは、Lambda関数と画像変換ライブラリ"sharp"をデプロイパッケージで管理していて、Lambda関数をマネジメントコンソール上で改修できません
本記事の概要
説明すること
- Windowsで、画像変換ライブラリ"sharp"をzip圧縮する方法
- マネジメントコンソールで、Lambda Layersにライブラリを登録して使用する方法
説明しないこと
- Lambdaチュートリアルの内容
- Lambda関数をマネジメントコンソール上で作成する手順
環境
- Node.js 12.x
- AWS CLI 2
- Windows10
説明
Windowsで、画像変換ライブラリ"sharp"をzip圧縮する方法
1.コマンドプロンプトを起動し、任意のフォルダでnodejs
フォルダを作成する。
...> mkdir nodejs
2.nodejs
フォルダへ移動し、npm コマンドで 画像変換ライブラリ"sharp"を取得する。
.../nodejs> npm install --arch=x64 --platform=linux --target=12.13.0 sharp
3.nodejs
フォルダを右クリックしてzip圧縮する。
※注意
powershellのcompress-archiveでzip圧縮した場合、Lambda Layer作成時に以下のエラーとなりました。
...> powershell compress-archive nodejs sharp
レイヤーバージョンを作成できませんでした: Layer conversion failed: Some directories do not have execute permissions;
4.sharp.zipのフォルダ構成を確認する。以下のフォルダ構造になっていればOK。
sharp.zip
└ nodejs
|- package-lock.json
|- /node_modules/sharp
└ /node_modules/...
マネジメントコンソールで、Lambda Layersにライブラリを登録して使用する方法
1.Lambda Layerにsharp-layer
を作成し、sharp.zipをアップロードする。詳細は以下の画面イメージを参照下さい。
2.Lambda関数にLambda Layerのsharp-layer
を設定する。詳細は以下の画面イメージを参照下さい。
参考サイト
- チュートリアル: Amazon S3 で AWS Lambda を使用する
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example.html - AWS Lambda レイヤー
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html - AWS Lambda Layersでnode_modulesを使う
https://xp-cloud.jp/blog/2019/01/12/4630/