

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# EKS に最適化されたカスタム Amazon Linux AMI の構築
<a name="eks-ami-build-scripts"></a>

**警告**  
Amazon EKS は、2025 年 11 月 26 日に、EKS 最適化 Amazon Linux 2 (AL2) AMI の公開を取り止めました。Amazon EKS 用の AL2023 および Bottlerocket ベースの AMI は、バージョン 1.33 以降をはじめサポート対象のすべての Kubernetes で使用できます。

Amazon EKS では、「[Amazon EKS AMI Build Specification](https://github.com/awslabs/amazon-eks-ami)」リポジトリにオープンソースのビルドスクリプトが用意されており、これらを使用して`kubelet`、ランタイム環境、AWS IAM Authenticator for Kubernetes の設定を確認し、AL ベースの AMI を一から構築できます。

このリポジトリには、ブート時に実行される特殊な [AL2 用 bootstrap スクリプト](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2/runtime/bootstrap.sh)と [AL2023 用 nodeadm ツール](https://awslabs.github.io/amazon-eks-ami/nodeadm/)が保存されています。これらのスクリプトによって、インスタンスの証明書データ、コントロールプレーンエンドポイント、クラスター名などを設定します。ここに置かれているものは、Amazon EKS 最適化 AMI のビルド用として最も信頼できるスクリプトと見なされるため、GitHub リポジトリの状態をフォローすることで、AMI への変更をモニタリングできます。

EKS 最適化 AMI をベースとしてカスタム AMI を構築する場合、コンポーネントの互換性が損なわれる可能性があるため、オペレーティングシステムのアップグレード (`dnf upgrade` など) を実行したり、EKS 最適化 AMI に含まれる Kubernetes または GPU パッケージをアップグレードしたりすることは、推奨もサポートもされていません。EKS 最適化 AMI に含まれるオペレーティングシステムまたはパッケージをアップグレードする場合は、本番環境にデプロイする前に、開発環境またはステージング環境で徹底的にテストすることをお勧めします。

GPU インスタンス用のカスタム AMI を構築する場合は、実行するインスタンスタイプの世代およびファミリーごとに、個別のカスタム AMI を構築することをお勧めします。EKS 最適化高速 AMI は、基盤となるインスタンスタイプの世代およびファミリーに基づいて、ランタイム時にドライバーとパッケージを選択的にインストールします。詳細については、[インストール](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/provisioners/install-nvidia-driver.sh)と[ランタイム](https://github.com/awslabs/amazon-eks-ami/blob/main/templates/al2023/runtime/gpu/nvidia-kmod-load.sh)の EKS AMI スクリプトを参照してください。

## 前提条件
<a name="_prerequisites"></a>
+  [AWS CLI をインストールする](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html) 
+  [HashiCorp Packer v1.9.4\$1 をインストールする](https://developer.hashicorp.com/packer/downloads) 
+  [GNU Make をインストールする](https://www.gnu.org/software/make/) 

## クイックスタート
<a name="_quickstart"></a>

このクイックスタートでは、AWS アカウントにカスタム AMI を作成するコマンドを示します。AMI のカスタマイズに使用できる設定の詳細については、「[Amazon Linux 2023](https://awslabs.github.io/amazon-eks-ami/usage/al2023/)」ページのテンプレート変数を参照してください。

### 前提条件
<a name="_prerequisites_2"></a>

必要な [Amazon プラグイン](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon)をインストールします。例えば、次のようになります。

```
packer plugins install github.com/hashicorp/amazon
```

### ステップ 1. 環境をセットアップする
<a name="_step_1_setup_your_environment"></a>

公式の Amazon EKS AMI リポジトリをクローンまたはフォークします。例えば、次のようになります。

```
git clone https://github.com/awslabs/amazon-eks-ami.git
cd amazon-eks-ami
```

Packer がインストールされていることを確認します。

```
packer --version
```

### ステップ 2. カスタム AMI を作成する
<a name="_step_2_create_a_custom_ami"></a>

さまざまなカスタム AMI のコマンド例を以下に示します。

 **基本的な NVIDIA AL2 AMI** 

```
make k8s=1.31 os_distro=al2 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **基本的な NVIDIA AL2023 AMI** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=nvidia \
  nvidia_driver_major_version=560 \
  enable_efa=true
```

 **STIG 準拠 Neuron AL2023 AMI** 

```
make k8s=1.31 os_distro=al2023 \
  enable_accelerator=neuron \
  enable_fips=true \
  source_ami_id=ami-0abcd1234efgh5678 \
  kms_key_id=alias/aws-stig
```

これらのコマンドを実行すると、Packer によって次の操作が行われます。\$1 一時的な Amazon EC2 インスタンスを起動します。\$1 Kubernetes コンポーネント、ドライバー、設定をインストールします。\$1 AWS アカウントで AMI を作成します。

正常な出力は次の例のようになります。

```
==> Wait completed after 8 minutes 42 seconds

==> Builds finished. The artifacts of successful builds are:
--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9

--> amazon-ebs: AMIs were created:
us-west-2: ami-0e139a4b1a7a9a3e9
```

### ステップ 3. デフォルト値を表示する
<a name="_step_3_view_default_values"></a>

デフォルト値と追加オプションを表示するには、次のコマンドを実行します。

```
make help
```