【注意】AWS LambdaでNode.js v4.3の終了がアナウンスされました
大栗です。
先程AWS LambdaのNode.js v4.3の廃止についてアナウンスがありましたのでご紹介します。
Announcement: Node.js v4.x is now EOL, please migrate your functions to a newer runtime version
Node.js v4.3のEOL
Node.js自体のEOL
言語/ランタイムとしてのNode.js v4系はActive LTS が2015年10年1日に開始され、Maintenance LTSが2018年4月30日に終了しました。そのためNode.jsから公式のアップデートが出ることはありません。もしEOLになっているv4系を含むNode.jsを使用している場合はすぐに新しいバージョンへアップデートすることが推奨されます。なお、v4系以降のバージョンでもLTSでないv5系やv7系はすでにEOLとなっています。
バージョン | 言語自体のLTS開始 | 言語自体のEOL | 備考 |
---|---|---|---|
Node.js v0.10系 | 2013/03/11* | 2016/10/31 | 現在はEOL *明確なActive LTSの開始は無い |
Node.js v4系 | 2015/10/01 | 2018/04/30 | 現在はEOL |
Node.js v6系 | 2016/10/18 | 2019年4月予定 | 現在はMaintenance LTS |
Node.js v8系 | 2017/10/31 | 2019年12月予定 | 現在はActive LTS |
Node.js v10系 | 2018年10月予定 | 2021年4月予定 | 現在はCurrent Release |
https://github.com/nodejs/Release/blob/master/README.md より
v8系はOpenSSL-1.0.2のEOLに合わせてEOLになるためMaintenance LTSの期間が短くなっています。
AWS LambdaにおけるNode.js v4.3のEOL
AWS Lambdaではアナウンスメントに以下の記載が有ります。
New function creation and code updates for existing functions using the Node.js v4.3 runtime will be disabled by July 31 and October 31, 2018, respectively.
つまり、Node.js v4.3ランタイムを使用した新規の関数作成は2018年7月31日まで、既存の関数の更新は2018年10月31日までとなります。関数の動作終了については現時点でアナウンスがありませんが近々起動しなくなると考えられます。LambdaにおけるNode.jsのライフサイクルは以下になります。
バージョン | Lambdaサポート開始 | Lambda作成終了 | Lambda更新終了 | Lambda動作終了 | 備考 |
---|---|---|---|---|---|
Node.js v0.10 | 2014/11/15 | 2017/01/11 | 2017/5/30 | 2017/5/30 | ホワイトリストに登録することで動作終了以降も一時的に動作させることが可能でした。 |
Node.js v4.3 | 2016/04/07 | 2018/07/31 | 2018/10/31 | - | 動作終了は未定。 |
Node.js v6.10 | 2017/03/22 | - | - | - | 現時点でLambdaの終了に関するアナウンスはない |
Node.js v8.10 | 2018/04/02 | - | - | - | 現時点でLambdaの終了に関するアナウンスはない |
言語自体のEOLから3ヶ月程度でLambdaの新規作成ができなくなっています。アナウンスはありませんが、今後も同様である場合はv6.10は2019年7月ごろに、v8.10は2020年3月ごろに新規作成できなくなると予想できます。
以下のエントリにもありますが、Node.jsはv8.10のラインタイムがサポートされています。出来る限り最新のv8.10へ移行しましょう。
EOLにあたっての注意
意図せぬLambda関数
自分で意図してLambdaを作成していなくともManagement Consoleから各種データ連携を有効にした場合に、自動でLambdaが作成される場合があります。例えばCloudWatch LogsのAmazon Elasticsearch Serviceへのストリーミングを行う場合などです。Lambdaを作成した覚えがなくても念のために対象のものがないか確認する必要があります。
新バージョンへ移行するに当たっての注意点
LambdaのNode.jsはv4.3のリリース時にプログラミングモデルが変更されています。現在はv4.3以降のランタイムしか動作しないため古いプログラミングモデルの関数は無いと思いますが、もしv0.10と同様の動作が必要な場合は以下のエントリの様にcontext.callbackWaitsForEmptyEventLoop
プロパティをfalse
に設定しましょう。callbackWaitsForEmptyEventLoop
プロパティの詳細についてはこちらを参照してください。
さいごに
Node.jsはライフサイクルが速いため2年に1回程度はバージョンアップタイプが必要となります。しかし、ライフサイクル自体は明確になっているのでバージョンアップ計画は立てやすいと思います。動作している環境は継続的なメンテナンスが必要ですので直前に慌てないようにあらかじめ計画をたてるようにしましょう。