なかったんで用意しておきました。まだ本番環境でサポート期限間近のランタイムを使っている人は参考にしてください。
※当時はNode.js 8.10系が対象でした。
TL;DR
- AWS Lambdaのランタイムの更新はダウンタイムがないので本番環境への適用もサービス稼働中でOK
- ランタイム更新時の動作確認は推奨
- 更新はAWSがランタイムサポートポリシーで定めている日付より前に実施する
手順
- 本番環境以外の環境で本番環境にデプロイされている資源と同じものをデプロイする
- デプロイした環境のLambdaのランタイムを上げる
- 動作確認を実施
- 問題なければ本番環境(ST環境 → 本番環境の順番でも)のLambdaのランタイムを更新する
気になるところ
廃止(更新)をすぎても更新可能なのか
これについてAWSサポートに問い合わせてみました。
AWSサポート内の過去事例として、廃止(更新)以降でもランタイムの移行(サポート対象バージョンへの移行)が可能だった例があったそうですが、ドキュメントにも明記がないように、それが必ずしも可能というわけでもないので、AWS的には非推奨という意見をもらいました。
そのためランタイムの更新は必ずAWSのランタイムサポートポリシーが掲げる日付よりも前に行いましょう。
また、ランタイムの更新時には ダウンタイムが発生することはない という意見も同時にいただいているので、本番環境で利用中の関数でもサービスを停止させることなく更新することが可能です。
ランタイム更新時の動作確認は必須なのか
こちらAWS SAに口頭で確認をしてみました。結論からいうと すべき です
Node.jsのRuntimeをあげる時は、syntax errorやnode_modulesにおける依存関係の中でエラーが発生する可能性があるので動作確認は必須。
以下別途いただいた懸念すべき点
・Node.js 12 と互換性のないコードが含まれていないか。
・Lambda の実行環境の OS には Amazon Linux と Amazon Linux 2 があるが、 OS に依存したコード (コードから特定のシェルコマンドを呼んでいる等) が含まれていないか。
Node.jsのライフサイクルは約2年なので、その検証に時間を取られることを嫌いNode.jsそのものを選択肢から外すケースもあるそうです。
検証ちゃんとやろうね。
最後に
え?まだ本番環境でNode.js 8.10系を使ってる?
じゃあランタイムの更新しますか。