AWS Lambdaで.NET 6が利用出来るようになりました
いわさです。
先月末に、Lambdaのランタイムで.NET 6が利用出来るようになりました。
東京リージョン、大阪リージョンでも利用が可能です。
ひさしぶりのLTSバージョン
これまで.NET Lambdaでの最新版は.NET Core 3.1でした。
ちなみに、これまでも.NET 5を使う方法はあったのですが、こちらはLTSではないことからLambdaのマネージドランタイムのポリシーを満たしていないということで、コンテナイメージでのみサポートされていました。
.NET 6 Lambdaで何が出来るか
.NET Core 3.1からのアップデートになるので、かなり多くの変更点があります。
Lambdaに関連するところを抜粋すると以下でしょうか。
aws-lambda-dotnet/RELEASE.CHANGELOG.md at master · aws/aws-lambda-dotnet
- カスタムランタイムテンプレートで.NET 6を使用するように変更
- Lambda共通のロギングAPIを.NET 6から利用出来るようになり、他のランタイムと同じ形式でログを出力出来る
- 新しいソースジェネレータの使用
- パフォーマンス向上、メモリ使用量の削減が期待できる
- Lambdaでは特に、コールドスタートのパフォーマンス向上が期待できるとのこと
実は、AWS re:Invent 2021の.NETセッションでは度々.NET6について言及されているのですが、.NET 5以降でARMプラットフォームの最適化が行われており、今回の.NET 6が利用可能になったことで、Lambda ARM環境でそれらの恩恵が期待出来ます。
また、Minimal APIについても利用可能になっているようです。
トップレベルステートメントも関係してきますが、Minimal APIを使うことでシンプルな実装で簡単にAPIを実装することが出来るようになります。
.NETのサーバーレス周りの実装が今後大きく変わりそうですね。
さいごに
移行方法は冒頭に紹介した.NET Core 3.1の記事と同じです。
既存プロジェクトのターゲットフレームワークを.NET6に変更した上でLambda向けにaws-lambda-tools-defaults.json
を修正します。
色々試したいところではありますが、次回以降特にパフォーマンスの比較とMinimal APIを使ったASP.NET Core APIのデプロイを行ってみたいと思います。