いきさつ
ある日AWSからnode16のサポート終了のお知らせが届きました。
...
LambdaでのNode.js 16のサポートは2024年6月12日に終了します
...
自分のLambdaを眺めていると、xxx-custom-resource-apigw-cw-role
node16ランタイムがいました。
これはServerless frameworkでデプロイしたときに自動生成されるもので、API GatewayのCloudWatch Logsのロールを作成するために使用されるらしい。
slsのバージョンを上げればいけそうだな〜と思い現在のバージョンを確認すると3.38.0
。これは記事執筆時点での最新バージョンです。えぇ...。
調べてみると以下のやりとりが:
https://github.com/serverless/serverless/issues/12307
ざっくり、こんな流れでした:
- サーバーレスフレームワークを介して作成されたcustom-resource-apigw-cw-role lambdaのランタイムを変更するにはどうすればよいですか?
-
lib/plugins/aws/custom-resources/index.js
にハードコードされてるからどうしようもないかも... - SLS v4で対応する予定よ(2024/2/17)
- 来週にはベータ版がリリースされる(予定)
- (3/5)まだすかね...
- node16サポート終了せまってるんだけど...
- そのうち解決されるはずだが、もう間に合わないのでなんらかの代替策を考えるしかないかな...(4/23)
という感じらしい
どうする?
6/12までに対応がされない場合、新規にSLSでデプロイをすることはできなくなります。
すでにデプロイされているものについては、sls deploy
コマンドで更新をすることができます。
もしも、6/12までに対応されなかった場合や、終了予定が決まっているnode16ランタイムが存在することが気になる場合、こちらの通りserverless.yml
の以下を書き換えて、xxx-custom-resource-apigw-cw-role
を生成しないようにする方法が考えられます。
logs:
+ restApi: false
# accessLogging: true
...
これで対象のLambdaは無くなります。
ただしAPI gateway周りのログがcloudwatchに記録されなくなるので、運用方針が合っているか検討する必要はあると思います。
2024/05/23更新
serverless v4がリリースされました。
これで解決するのかも(未確認)