はじめに
どうもAWS初心者です。
今回Lambdaについて学習を行いました。
S3を利用して画像のリサイズを行う事を目標に関数を作成しました。
S3バケットを2つ用意し1つ目のバケットに画像をアップロードした際に、2つ目のバケットにリサイズした画像を上げるといった動きです。
作成しテストまでは上手くいったのですが、実際に適当な画像を上げた際に動作しませんでした。
その事について記事にしてみようかと思います。
原因の予測
テストで使用したファイルと同じ拡張子のファイルを利用しました。
2つのファイルの違いはサイズであり、そこに原因があると思い、サイズの小さいファイルをアップロードしてみたら成功しました。
なのでファイルが大きいことが原因だと考えました。
原因の解明
クラウドウォッチのログを確認することで原因の解明をしようと思いました。
しかしログを見てもエラーはありませんでした。
エラーとしては出ていなかったのですが1つ1つよく見ていく中で原因が分かりました。
こちらのログを見ると「Duration: 3042.84 ms Billed Duration: 3000 ms」と書いてあります。
簡単に言うとリサイズを行うのに3042.84msかかったといった内容なのですが、ここを見て原因が分かりました。
タイムアウトの設定を3秒(3000ms)にしていたのですが、リサイズするのに3秒以上かかっていることが今回リサイズが行われなかった理由でした。なのでタイムアウトしたのでエラーとして残らなかった様です。(タイムアウトはエラーでは無いため)
ちなみに画像サイズは「Memory Size: 128 MB Max Memory Used: 86 MB」を見ると分かるのですが128MBを超えるとダメなのですが86MBしか使用してないので原因ではない。
修正
関数の基本設定を編集してあげます。
タイムアウトの項目で3秒になっていたのでそこを10秒に伸ばします。
結果、失敗していた画像でもリサイズすることが出来ました!!
おわりに
とても初歩的な内容だと思いますが、自身でログについて確認し原因をしっかり追究してみたので記事にしてみました。
ここまで読んでくださった方感謝です!