

# Amazon ECS 最適化 Bottlerocket AMI
<a name="ecs-bottlerocket"></a>

Bottlerocket は Linux ベースのオープンソースのオペレーティングシステムで、仮想マシンやベアメタルホスト上でコンテナを実行するために AWS によって専用に構築されています。Amazon ECS 最適化 Bottlerocket AMI は安全で、コンテナの実行に必要な最小数のパッケージのみが含まれています。これは、リソースの使用量を改善し、セキュリティのアタックサーフェスを縮小し、管理オーバーヘッドを削減するのに役立ちます。Bottlerocket AMI は Amazon ECS とも統合するため、クラスター内のコンテナインスタンスの更新に伴う運用上のオーバーヘッドを削減するのに役立ちます。

Bottlerocket は、次の点で Amazon Linux とは異なります。
+ Bottlerocket にはパッケージマネージャーが含まれておらず、そのソフトウェアはコンテナとしてのみ実行できます。Bottlerocket に対する更新は、1 つのステップで適用され、1 つのステップでロールバックできるため、更新エラーの可能性が低くなります。
+ Bottlerocket ホストを管理する主なメカニズムでは、コンテナスケジューラを使用します。Amazon Linux とは異なり、個別の Bottlerocket インスタンスへのログインは、高度なデバッグとトラブルシューティングのみを目的として、低頻度で実行される操作であることを想定しています。

Bottlerocket の詳細については、「GitHub」の「[ドキュメント](https://github.com/bottlerocket-os/bottlerocket/blob/develop/README.md)」と「[リリース](https://github.com/bottlerocket-os/bottlerocket/releases)」を参照してください。

Amazon ECS に最適化された Bottlerocket AMI には、カーネル 6.1 用とカーネル 5.10 用のバリアントがあります。

以下のバリアントはカーネル 6.1 を使用します。
+ `aws-ecs-2`
+ `aws-ecs-2-nvidia`

以下のバリアントはカーネル 5.10 を使用します。
+ `aws-ecs-1`
+ `aws-ecs-1-nvidia`

  `aws-ecs-1-nvidia` バリアントの詳細については、「[Amazon ECS での Bottlerocket 向け NVIDIA GPU サポートの発表](https://aws.amazon.com/blogs/containers/announcing-nvidia-gpu-support-for-bottlerocket-on-amazon-ecs/)」を参照してください。

## 考慮事項
<a name="ecs-bottlerocket-considerations"></a>

Amazon ECS で Bottlerocket AMI を使用する場合は、次の点を考慮してください。
+ Bottlerocket は、`x86_64` と `arm64` プロセッサを搭載した Amazon EC2 インスタンスをサポートします。Bottlerocket AMI を Inferentia チップを搭載した Amazon EC2 インスタンスで使用することはお勧めしません。
+ Bottlerocket イメージには、SSH サーバーまたはシェルは含まれません。ただし、帯域外管理ツールを使用して、SSH 管理者アクセスを取得し、ブートストラップを実行できます。

   詳細については、「GitHub」の「[bottlerocket README.md](https://github.com/bottlerocket-os/bottlerocket)」のセクションを参照してください。
  + [探査](https://github.com/bottlerocket-os/bottlerocket#exploration)
  + [管理者コンテナ](https://github.com/bottlerocket-os/bottlerocket#admin-container)
+ デフォルトで、Bottlerocket には有効になっている[コントロールコンテナ](https://github.com/bottlerocket-os/bottlerocket-control-container)があります。このコンテナは、Amazon EC2 Bottlerocket インスタンス上でのコマンドの実行やシェルセッションの開始に使用できる [AWS Systems Manager エージェント](https://github.com/aws/amazon-ssm-agent)を実行します。詳細については、*AWS Systems Manager ユーザーガイド*の [Session Manager のセットアップ](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-getting-started.html)を参照してください。
+ Bottlerocketはコンテナのワークロード向けに最適化されており、セキュリティに重点を置いています。Bottlerocket にはパッケージマネージャーが含まれておらず、イミュータブルです。

  セキュリティ機能とガイダンスについては、GitHub の「[セキュリティ機能](https://github.com/bottlerocket-os/bottlerocket/blob/develop/SECURITY_FEATURES.md)」および「[セキュリティガイダンス](https://github.com/bottlerocket-os/bottlerocket/blob/develop/SECURITY_GUIDANCE.md)」を参照してください。
+ `awsvpc` ネットワークモードは、`1.1.0` 以降の Bottlerocket AMI バージョンでサポートされています。
+ タスク定義の App Mesh は Bottlerocket AMI バージョン `1.15.0` 以降でサポートされています。
+ タスク定義パラメータ `initProcessEnabled` は Bottlerocket AMI バージョン `1.19.0` 以降でサポートされています。
+ Bottlerocket AMI は、次のサービスと機能もサポートしていません。
  + ECS Anywhere
  + Service Connect
  + 暗号化モードの Amazon EFS
  + `awsvpc` ネットワークモードの Amazon EFS
  + Amazon EBS ボリュームをマウントできない
  + Elastic Inference アクセラレーター