AWS CodeBuild のオンデマンドビルドの新機能「ホストカーネル選択」を試してみた
はじめに
2026年6月30日、AWS CodeBuild のオンデマンドビルドでホストカーネルを選択できるようになりました。
AWS CLI v2.35.13 の CHANGELOG に以下のエントリが追加されています。
2.35.13
api-change:
codebuild: Adds support for host kernel selection for on-demand builds.
プロジェクト設定の environment.hostKernel でデフォルト値を指定し、start-build の --host-kernel-override でビルドごとに上書きできます。
なぜホストカーネルの選択が必要か
CodeBuild のデフォルト(hostKernel 未指定)では、ホストカーネルとして Amazon Linux 2(kernel 4.14)が使用されます。しかし Amazon Linux 2 は 2026年6月30日に EOL を迎えています。
従来、CodeBuild の EC2 コンピュートでは AMI に latest を指定しても AL2 ホストが起動し、AL2023 ホストを選択する手段がありませんでした。hostKernel パラメータにより以下のように変わります。
| 項目 | 従来(hostKernel 未指定) | 新(hostKernel 指定) |
|---|---|---|
| ホストカーネル選択 | 不可(暗黙的に AL2 kernel 4.14) | LINUX_KERNEL_4 / LINUX_KERNEL_6 / LINUX_KERNEL_LATEST から選択 |
| EC2 コンピュートのホストOS | 常に AL2 | 指定に応じて AL2 または AL2023 |
| Container コンピュートのホストカーネル | 常に kernel 4.14 | 指定に応じて kernel 4.14 または 6.1 |
設定値
| 設定値 | ホストカーネル | 備考 |
|---|---|---|
LINUX_KERNEL_4 |
kernel 4.14(Amazon Linux 2) | 従来動作と同一 |
LINUX_KERNEL_6 |
kernel 6.1(Amazon Linux 2023) | AL2023 ベースのホスト |
LINUX_KERNEL_LATEST |
最新カーネル | 検証時点では LINUX_KERNEL_6 と同じ 6.1 を返した。自動追従の挙動は未文書化 |
検証内容
4環境タイプ × 4 hostKernel設定 = 16パターンを実行しました。
検証環境
- リージョン: ap-northeast-1
- コンピュートタイプ: BUILD_GENERAL1_SMALL
- ソース: NO_SOURCE(buildspec インライン)
- AWS CLI: v2.35.15
使用した環境タイプとイメージ:
| 環境タイプ | アーキテクチャ | イメージ |
|---|---|---|
| LINUX_CONTAINER | x86_64 | aws/codebuild/amazonlinux2-x86_64-standard:5.0 |
| ARM_CONTAINER | aarch64 | aws/codebuild/amazonlinux2-aarch64-standard:3.0 |
| LINUX_EC2 | x86_64 | aws/codebuild/ami/amazonlinux-x86_64-base:latest |
| ARM_EC2 | aarch64 | aws/codebuild/ami/amazonlinux-arm-base:latest |
検証方法
--host-kernel-override でパターンごとにホストカーネルを指定してビルドを実行しました。以下は LINUX_CONTAINER 環境で LINUX_KERNEL_6 を指定する例です。
aws codebuild start-build \
--project-name kernel-test-linux-container \
--host-kernel-override LINUX_KERNEL_6 \
--buildspec-override 'version: 0.2
phases:
build:
commands:
- uname -r
- uname -a
- cat /etc/os-release'
検証結果
Container 環境のホストOS欄は uname -r から判定しています。コンテナOS は /etc/os-release の内容です。EC2 環境では /etc/os-release も確認しました。
Container 環境
| hostKernel | uname -r | ホストOS | コンテナOS |
|---|---|---|---|
| LINUX_KERNEL_4 | 4.14.355-282.733.amzn2.x86_64 | Amazon Linux 2 | Amazon Linux 2023 |
| LINUX_KERNEL_6 | 6.1.174-217.345.amzn2023.x86_64 | Amazon Linux 2023 | Amazon Linux 2023 |
| LINUX_KERNEL_LATEST | 6.1.174-217.345.amzn2023.x86_64 | Amazon Linux 2023 | Amazon Linux 2023 |
| 未指定 | 4.14.355-282.733.amzn2.x86_64 | Amazon Linux 2 | Amazon Linux 2023 |
EC2 環境
| hostKernel | uname -r | ホストOS |
|---|---|---|
| LINUX_KERNEL_4 | 4.14.355-282.733.amzn2.x86_64 | Amazon Linux 2 |
| LINUX_KERNEL_6 | 6.1.174-217.345.amzn2023.x86_64 | Amazon Linux 2023 |
| LINUX_KERNEL_LATEST | 6.1.174-217.345.amzn2023.x86_64 | Amazon Linux 2023 |
| 未指定 | 4.14.355-282.733.amzn2.x86_64 | Amazon Linux 2 |
上記は LINUX_CONTAINER / LINUX_EC2(x86_64)の結果です。ARM_CONTAINER / ARM_EC2(aarch64)でも挙動パターンは同一でした。
ARM 環境の結果(全8パターン)
| 環境タイプ | hostKernel | uname -r | ホストOS | コンテナOS |
|---|---|---|---|---|
| ARM_CONTAINER | LINUX_KERNEL_4 | 4.14.355-284.735.amzn2.aarch64 | Amazon Linux 2 | Amazon Linux 2023 |
| ARM_CONTAINER | LINUX_KERNEL_6 | 6.1.174-217.345.amzn2023.aarch64 | Amazon Linux 2023 | Amazon Linux 2023 |
| ARM_CONTAINER | LINUX_KERNEL_LATEST | 6.1.174-217.345.amzn2023.aarch64 | Amazon Linux 2023 | Amazon Linux 2023 |
| ARM_CONTAINER | 未指定 | 4.14.355-284.735.amzn2.aarch64 | Amazon Linux 2 | Amazon Linux 2023 |
| ARM_EC2 | LINUX_KERNEL_4 | 4.14.355-284.735.amzn2.aarch64 | Amazon Linux 2 | — |
| ARM_EC2 | LINUX_KERNEL_6 | 6.1.174-217.345.amzn2023.aarch64 | Amazon Linux 2023 | — |
| ARM_EC2 | LINUX_KERNEL_LATEST | 6.1.174-217.345.amzn2023.aarch64 | Amazon Linux 2023 | — |
| ARM_EC2 | 未指定 | 4.14.355-284.735.amzn2.aarch64 | Amazon Linux 2 | — |
ログ出力例
LINUX_CONTAINER で LINUX_KERNEL_6 を指定した場合:
uname -r: 6.1.174-217.345.amzn2023.x86_64
uname -a: Linux b52a676ce38d 6.1.174-217.345.amzn2023.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jun 1 16:38:11 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
/etc/os-release: Amazon Linux 2023.12.20260611
LINUX_EC2 で LINUX_KERNEL_4 を指定した場合:
uname -r: 4.14.355-282.733.amzn2.x86_64
uname -a: Linux ip-xx-xx-xx-xxx.ap-northeast-1.compute.internal 4.14.355-282.733.amzn2.x86_64 #1 SMP Mon Jun 1 08:18:47 UTC 2026 x86_64 x86_64 x86_64 GNU/Linux
/etc/os-release: Amazon Linux 2 (SUPPORT_END=2026-06-30)
考察
デフォルト(未指定)の挙動
全環境タイプで hostKernel を未指定にした場合、ホストカーネルは kernel 4.14(Amazon Linux 2)でした。従来の CodeBuild と同じ動作であり、この機能追加前後でデフォルトの挙動は変わっていません。
LINUX_KERNEL_LATEST の実体
現時点(2026年7月)では、LINUX_KERNEL_LATEST と LINUX_KERNEL_6 の uname -r は同じ 6.1.174-217.345.amzn2023 系でした。x86_64 / aarch64 ともに、LATEST は LINUX_KERNEL_6 と同じ挙動パターンです。
LATEST は将来のカーネル更新に自動追従する意図と推測されますが、この挙動は公式ドキュメントに明記されていません。
Container 環境と EC2 環境の挙動差
Container 環境では、hostKernel の設定に関わらずコンテナ内の /etc/os-release は常に Amazon Linux 2023 でした。イメージ名に amazonlinux2 を含みますが、今回使用した 5.0 / 3.0 イメージの中身は AL2023 です。一方、uname -r はホストカーネルのバージョンを返すため、コンテナ内からもホストカーネルの違いを確認できました。
EC2 環境では、hostKernel の設定によってホストOS自体が切り替わります。LINUX_KERNEL_4 では Amazon Linux 2、LINUX_KERNEL_6 では Amazon Linux 2023 です。OS が異なるため、ビルドスクリプトの互換性に注意が必要です。
まとめ
hostKernel パラメータにより、CodeBuild のオンデマンドビルドでホストカーネルを明示的に選択できるようになりました。デフォルト(未指定)および LINUX_KERNEL_4 では AL2 kernel 4.14 が使用されるため、AL2 の EOL を踏まえると、新規プロジェクトでは LINUX_KERNEL_6 または LINUX_KERNEL_LATEST の指定を推奨します。
Container 環境ではコンテナイメージ自体は hostKernel 設定で変わらないため、LINUX_KERNEL_LATEST を指定しておけばカーネルの世代交代時にも追従しやすいと考えられます。EC2 環境ではホストOS自体が切り替わるため、まず LINUX_KERNEL_6 で AL2023 との互換性を確認し、問題なければそのまま採用するのが堅実です。
参考リンク
- Docker images provided by CodeBuild — 利用可能なイメージ一覧








