AWS Lambdaで.NET 6が利用出来るようになりました

2022.03.05

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

先月末に、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のデプロイを行ってみたいと思います。