AWS Lambdaで画像のリサイズImageMagickで処理エラー!原因は画像ファイルのContent-Typeにあった

日々、AWSのクラウドを利用してサービスを提供しているのですが約半年ほど前に導入した画像リサイズが原因不明のエラーで処理が行えなくなるという事象が発生しました。

S3にアップした画像をLambdaでリサイズして別バケット(bucket)に保存するNode.jsのサンプルコード
とある案件でS3にアップされるオリジナル画像をリサイズで別バケットに保存したい要望があり先人の知恵と伝家の宝刀コピペを駆使して組んでみました...

原因を調べると驚きの事実が分かりました。

Tumisu / Pixabay

処理の流れを簡単に

画像(FTP)→PHPの取得PG→S3アップ→イベントトリガーでLambda(リサイズ)→S3別バケットに保存 が流れです。

実はエラーが発生し始めたタイミングで処理の流れは変えずに取得PGを変更していた しかしPGの処理に誤りはなく画像ファイルをS3へアップロード出来ていた。では なぜ?

エラー箇所はLambda内のImageMagickの処理時に発生していた。前日まで正常に動いていたが、取得PGを変更してからアップロードした画像は全てエラーになっているようだ。

原因をPG修正してくれた会社さんと共に調べる そして画像アップロードの方法を色々と試すと画像ファイルをローカルPCからAWSのコンソールでアップすると問題なくリサイズされる?なぜ? で数時間が経過してしまうが協力会社さんから連絡があり「Content-Typeでした」と

やられたーーーー

もしかしたら、常識なのかもしれませんがImageMagickではContent-Typeを判断して処理を実行しているようで取得PGはPHPからJavaに言語が変わりPHPの場合はContent-Typeありの画像ファイルとしてアップロードされていたのですがJavaは明示的にContent-Typeを指定しないと拡張子にjpgが付いただけのオブジェクトファイルをアップロードしていたことになります。ここに原因があったのです。

ImageMagickではContent-Type

これを事前に知っていれば良かったと言ってもあとの祭りです。同じことで困る人が空くなればと思い、備忘も含めて投稿しました。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする