AWS Lambdaは先頃、マネージドランタイムとコンテナベースイメージの両方で.NET 6のサポートを追加した。新たなランタイムには.NET言語の新機能とパフォーマンスの最適化が導入される他、ロギングが改善され、トップレベルステートメントによる関数定義の簡略化が実現されている。
新しい.NET 6 Lambdaランタイムは、x86とArms/Graviton2プロセッサをサポートし、C# 10とF# 6を新たにサポートする他、C# 9のトップレベルステートメントを使った新しいコーディングパターンをオプションで提供する。
新ランタイムの大きな強化点のひとつがロギングの改善だ。これについて、AWSのシニアソフトウェアエンジニアであるNorm Johanson氏が、別の記事の中で説明している。
.NET Lambda関数のロギングが.NET 6用に改良されて、より優れたトレーサビリティとログ対象のコントロール機能が提供できるようになりました(...)。これまでの.NET Lambdaランタイムに多く寄せられていた要望のひとつとして、ログにLambda要求IDを加えてトレーサビリティを改善する、というものがありました。これが.NET 6ランタイムで実現して、.NETのログフォーマットが他のラムダランタイムと同じ形式になりました。また、ログメッセージのレベルが、要求IDと合わせてAmazon CloudWatch Logsに表示されるようになりました。これにより、エラーや警告など、特定のメッセージパターンをログから検索する作業が簡単になります。
Johanson氏はさらに、従来の.NETバージョンを実行する既存Lambda関数の移行に関しても説明している。AWSでもガイドを公開して、自らの提供する他の.NET 6サポート対応サービスやツールについて、詳細な情報を提供している。
.NET の最新LTSリリースを提供するメリットとしては、開発プロセスの簡略化、FileStreamのパフォーマンス改善、プロファイルに基づく最適化、AOTコンパイル、といったものが挙げられる。新しいランタイムには、多くの開発者からコメントが寄せられている。Hacker News上の議論では、ユーザjdmichalが次のように発言している。
私は日頃、PowerShellラムダを実行するためにこれを使用しています。C#やF#での運用に比べれば少数派かも知れません。ただひとつ気に入らない点は、メモリが256MBを下回ると、ランタイムのパフォーマンスが低下し始めることです。実行上に問題はないのですが、相当遅くなります。あまりに遅くなるので、メモリ-秒数で考えれば、単純にメモリを増設した方が安上りなくらいです。
Redditのスレッドでは、さらにユーザchrisoverzeroが、
トップレベルステートメントが使えるのは魅力的なのですが、私はいつも、オーバーヘッドを減らすために、同じアセンブリ内に(場合によっては同じクラス内にも)複数のFunctionを置くようにしています。エントリポイントを複数用意する方法はないと思うのですが、そうですよね?
新ランタイムは、AWS Chinaリージョン以外のLambdaが使用可能な全リージョンで提供される。