Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8691

LambdaのNode.js 12.xでimageMagickを使用する

$
0
0

初めに

Webアプリケーションから画像をアップロードする際にS3にファイルをputし、Lambdaでサムネイルを生成して公開用のバケットに保存する処理を構築していました。(前任者が・・・)
新たに同じようなシステムを構築するのに参考にしようとLambdaの関数のコンソールにアクセスすると以下のメッセージが表示されていました。
FireShot Capture 494 - createRecipeThumbnail - Lambda_ - https___ap-northeast-1.console.aws.png
Node.js 8.10を使っているので変更しないといけないよう。(把握しとけよ)
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/runtime-support-policy.html

対応内容

まずは新しい関数を作り、ランタイムをNode.js 12.xにしてindex.jsに保存。
index.jsの内容はAWSのサンプルを参考にしています。
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/with-s3-example-deployment-pkg.html

いざ実行

特に内容を変えずに実行すると以下のエラーが発生しました。

Error: write EPIPE   2020-01-29T11:33:50.941Z a84631dc-38d7-4b16-958c-8c88a85535c0
INFO  In transform::: Error: write EPIPE
    at afterWriteDispatched (internal/stream_base_commons.js:150:25)
    at writeGeneric (internal/stream_base_commons.js:141:3)
    at Socket._writeGeneric (net.js:770:11)
    at Socket._write (net.js:782:8)
    at doWrite (_stream_writable.js:431:12)
    at writeOrBuffer (_stream_writable.js:415:5)
    at Socket.Writable.write (_stream_writable.js:305:11)
    at gm._spawn (/var/task/node_modules/gm/lib/command.js:253:18)
    at gm._exec (/var/task/node_modules/gm/lib/command.js:190:17)
    at gm.proto. as size {
  errno: 'EPIPE',
  code: 'EPIPE',
  syscall: 'write'
}

AWSのフォーラムに同じような投稿があり、内容をみると、どうやらNode 12.xではimage Magickがそのままでは使えないみたいです。
https://forums.aws.amazon.com/thread.jspa?threadID=314320
write EPIPEでググってもヒットしなかったのですがat afterWriteDispatched~でググると全部英語の記事の中、上記のフォーラムがヒットしました。

なかなかややこしそうな内容が書いてあるのでNode.jsをあきらめてJAVAかPythonで書き直そうかと思ったのですがぺちぱーの僕には時間がかかりそうだったのでどうにかこのまま使える方法を探し続けた結果、以下の記事を発見。
AWS lambda(Python 3.8)でimagemagickを使う

無事解決

上記の記事のあるようにimage-magick-lambda-layerをdeployしてLambdaのLayersに設定することでコードを何も変えずに実行できた。

LambdaのLayersってのを初めて使ったんでこれきかっけにもうちょっと勉強しないと

参考

ここに行き着くまでに色々紆余曲折しました。
http://aws-mobile-development.hatenablog.com/entry/2016/11/25/152052

https://forums.aws.amazon.com/thread.jspa?threadID=314320


Viewing all articles
Browse latest Browse all 8691

Trending Articles