AWS CodeBuild のオンデマンドビルドの新機能「ホストカーネル選択」を試してみた

AWS CodeBuild のオンデマンドビルドの新機能「ホストカーネル選択」を試してみた

AWS CLI v2.35.13 で CodeBuild のオンデマンドビルドに hostKernel パラメータが追加されました。LINUX_KERNEL_4 / LINUX_KERNEL_6 / LINUX_KERNEL_LATEST から選択可能です。4環境×4パターン=16ビルドを実行し、デフォルト挙動や Container/EC2 環境での違いを検証しました。
2026.07.03

はじめに

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 でビルドごとに上書きできます。

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/codebuild/start-build.html

なぜホストカーネルの選択が必要か

CodeBuild のデフォルト(hostKernel 未指定)では、ホストカーネルとして Amazon Linux 2(kernel 4.14)が使用されます。しかし Amazon Linux 2 は 2026年6月30日に EOL を迎えています。

https://dev.classmethod.jp/articles/free-amazon-linux-2-bird/

従来、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_LATESTLINUX_KERNEL_6uname -r は同じ 6.1.174-217.345.amzn2023 系でした。x86_64 / aarch64 ともに、LATESTLINUX_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 との互換性を確認し、問題なければそのまま採用するのが堅実です。

参考リンク

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事