LambdaのNodejsをアップデートしたら困った話

F185d3ea1c138a5fa4efb845967938bb?s=47 is_ryo
February 12, 2020

 LambdaのNodejsをアップデートしたら困った話

F185d3ea1c138a5fa4efb845967938bb?s=128

is_ryo

February 12, 2020
Tweet

Transcript

  1. 2020/02/12 関西Node学園 9時限目 Ryosuke Izumi

  2. Ryosuke Izumi WebApplication / IoT AWS / Vue / TypeScript

    / Serverless v-kansai & kansai.ts organizer @is_ryo
  3. 今日の話題

  4. Lambda+Node.js の小話

  5. AWS使ってる人

  6. AWS使えるって 言える人いますか?

  7. Lambda使ってる人

  8. Lambda って便利ですよね

  9. ほんとユースケースが多い

  10. 個人的には Python とか Nodejs をLambda上で動かすことが多い

  11. https://twitter.com/Keisuke69/status/1224630084465643520

  12. ただEOLが近づいてくると AWSからメールが飛んでくる

  13. AWS「Nodejs v8 はもうすぐEOL だから10か12にバージョン上げ てね。EOLになったあとも動くけ ど、Lambda自体の更新はできな くなるよ。よろしく。」

  14. めっちゃ親切やん…

  15. Lambda 上の Nodejs も ちゃんとメンテナンスしないと いけない…

  16. やったこと

  17. Nodejs8.10 → Nodejs10.x

  18. 基本的に脳死状態で アップデートしていった (真似しちゃダメ。絶対。)

  19. あるLambdaだけアップデート したあとにエラーを吐き出した…

  20. 何が起きたか

  21. module が見つからん! っていうエラーが出た

  22. こんな書き方になっていた…

  23. おわかりいただけただろうか?

  24. None
  25. 原因

  26. Nodejs10.x から AmazonLinux2 上に展開されるようになってい て、環境変数$NODE_PATHの内 容が変わっていた。

  27. Lambda Workers (EC2 Instances) Host OS Hypervisor MicroVM Lambda Lambda

    EC2 Bare Metal Instance Host OS Host Kernel KVM Firecraker MicroVM Lambda Firecraker MicroVM Lambda EC2 モデル Firecraker モデル
  28. • Nodejs8.10 • Nodejs10.x

  29. • Nodejs8.10 /opt/nodejs/node8/node_modules:/opt/nodejs /node_modules:/var/runtime/node_modules:/v ar/runtime:/var/task:/var/runtime/node_mod ules • Nodejs10.x /opt/nodejs/node10/node_modules:/opt/nodej s/node_modules:/var/runtime/node_modules

  30. https://nodejs.org/docs/v12.13.1/api/modules.html

  31. /var/task に path が通って なかったので参照できなかった

  32. 解決方法

  33. ちゃんと相対パスで書こう

  34. import文を使おう

  35. まとめ

  36. • require はちゃんと相対パスで書こう • import文っていう方法もあるよ • アップデートはNodejs だけの問題じゃ ないときあるので気をつけよう •

    Lambdaのデプロイはフレームワーク等 で管理しないと大変…
  37. おわり