1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Lambdaで.NET 8から.NET 10に移行したときにやったこと

1
Posted at

はじめに

 AWS LambdaでLTSである.NET10がランタイムサポートされました。 
 https://aws.amazon.com/jp/about-aws/whats-new/2026/01/aws-lambda-dot-net-10/

 AWS Lambdaでは.NETの以前のLTSである.NET8のランタイムサポートの予定を以下のようにしています。

イベント 予定日
廃止日 2026/11/10
関数の作成をブロック 2026/12/10
関数の更新をブロック 2027/1/11

 このためAWS Lambdaで.NET8を利用しているユーザーは早期に.NET10に移行する必要があります。

やったこと

開発環境にVisual Studio 2026をインストール(※Visual Studioを使う場合)

.NET10がサポートされているVisual Studioのバージョンは18.0以降となり、18.0とはVisual Studio 2026を指します。Visual Studio 2022は正式サポートされないため、素直にVisual Studio 2026をインストールしました。軽量なアプリ開発であれば、VS Code + C# Dev Kit + .NET 10 SDKでも良いかと思います。

https://learn.microsoft.com/ja-jp/dotnet/core/porting/versioning-sdk-msbuild-vs#supported-net-versions

ターゲットフレームワークの変更

プロジェクトファイルのターゲットフレームワークを変更します。

***.csproj
-    <TargetFramework>net8.0</TargetFramework>
+    <TargetFramework>net10.0</TargetFramework>

aws-lambda-tools-defaults.jsonの修正

AWS Toolkit for Visual Studioのテンプレートを使っている場合は、こちらのファイルがあるはずなので修正。

aws-lambda-tools-defaults.json
-   "framework": "net8.0",
+   "framework": "net10.0",

function-runtimeを指定している場合は以下も修正が必要です。

aws-lambda-tools-defaults.json
-   "function-runtime": "dotnet8",
+   "function-runtime": "dotnet10",

SAMテンプレートの修正

SAMテンプレートを使っている場合は以下の通り修正します。

serverless.template
-         "Runtime": "dotnet8",
+         "Runtime": "dotnet10",

buildspec.ymlの修正

以下で最新の.NET10 SDKのバージョンを確認します。

.NET 10.0 のダウンロード
https://dotnet.microsoft.com/ja-jp/download/dotnet/10.0

※2026/3/16時点では10.0.201だったので以降は10.0.201の前提で進めます。
buildspec.ymlのruntime-versionsで10.0.201を指定します。

buildspec.yml
version: 0.2
phases:
  install:
    runtime-versions:
-      dotnet: 8.0
+      dotnet: 10.0.201

この対応は暫定対応となります。
現在はCodeBuildのAWS公式のDocker Imageでは.NET10対応が行われていませんので10.0のようなマイナーバージョンまでの指定はエラーとなります。
カスタムランタイムバージョン指定により10.0.201のような形でパッチバージョンまで指定することで、.NET10をインストールすることができます。ただしこの場合、内部のソースをみれば分かりますが、個別に指定バージョンのダウンロード、インストール等の処理が動くことになるため、少し時間がかかります。私が試したときはglobal.jsonの作成まで含め17秒程度かかりました。CodeBuild公式のDocker Imageが対応された場合は、そちらを使うようにした方が処理は速いかと思います。

CodeBuildでSPALの利用

.NET6から8に変更した際、同時にCodeBuildのベースOSがAmazonLinux2からAmazonLinux2023になった影響で、yumからdnfとなり、EPELが使えなくなりました。このため、私の場合、各種パッケージを個別にインストールしていました。2025/11/18に、EPELの代替となるSPALがリリースされ、こちらを適用することで、dnfでインストールできるパッケージを拡張することができます。

buildspec.yml
+ dnf install -y spal-release

AWS が Supplementary Packages for Amazon Linux を発表
https://aws.amazon.com/jp/about-aws/whats-new/2025/11/supplementary-packages-amazon-linux/

インストールできるパッケージは以下のリンク先にリストされています。
https://docs.aws.amazon.com/ja_jp/linux/al2023/release-notes/al-2023-spal-packages.html

Lambdaデプロイコマンドの修正

CodeBuildでlambdaのデプロイコマンドを使っている場合は、以下の通り修正します。コマンドがdeploy-functionの場合も同様です。

buildspec.yml
- dotnet lambda deploy-serverless --framework "net8.0"
+ dotnet lambda deploy-serverless --framework "net10.0"

NSwag関連の修正

NSwagを利用している場合は、以下の部分を修正。

****.csproj
- 	<Exec Command="$(NSwagExe_Net80) run nswag.json /variables:ProjectPath=$(MSBuildProjectFullPath)" />
+ 	<Exec Command="$(NSwagExe_Net100) run nswag.json /variables:ProjectPath=$(MSBuildProjectFullPath)" />
nswag.json
-   "runtime": "Net80",
+   "runtime": "Net100",

NuGetパッケージの更新

.NET 10に対応していないバージョンがある場合は更新が必要です。

その他影響箇所の修正

以下のURLを参照し、該当箇所があれば修正。

https://learn.microsoft.com/ja-jp/aspnet/core/migration/80-to-90?view=aspnetcore-8.0&tabs=visual-studio

https://learn.microsoft.com/ja-jp/aspnet/core/migration/90-to-100?view=aspnetcore-8.0&tabs=visual-studio

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?