Amazon ECS で「the closest matching container-instance container-instance-id has insufficient CPU units available」というエラーを解決する方法を教えてください。
最終更新日: 2019 年 7 月 3 日
Amazon Elastic Container Service (Amazon ECS) にタスクを配置しようとすると、次のエラーが表示されます。「[AWS service] was unable to place a task because no container instance met all of its requirements.The closest matching container-instance container-instance-id has insufficient CPU units available.」 このエラーの解決方法を教えてください。
簡単な説明
タスク配置に最も近いコンテナインスタンスに、タスク定義の要件を満たすのに十分な CPU ユニットがない場合、このエラーが発生する可能性があります。
注: 上記のエラーメッセージが表示されない場合は、受け取った次のエラーメッセージのいずれかに基づいた記事を選択してください。
解決方法
コンテナインスタンスの残りの CPU ユニットを確認する
- Amazon ECS コンソールを開きます。
- タスクを配置するクラスターを選択し、[ECS Instances] タブをクリックします。
- エラーメッセージで返されたコンテナインスタンス ID を持つコンテナインスタンスを選択します。
- インスタンスの [Details] タブで残りの CPU ユニットを確認するには、CPU行 ([Registered] と [Available] の CPU ユニット数を示すテーブル内) を探します。
注: コンテナインスタンスを記述 (awscli を使用) して、CPU ユニットを表示することもできます。
CPU の要件を満たすように調整する
- タスクサイズを変更し、CPU 要件を満たします。
注: 必要に応じて、タスクに使用される CPU の合計量を指定できます。合計量は、コンテナー定義レベルの CPU およびメモリの値とは異なります。CPU の総量は厳しく制限されており、超えることはできません。タスクレベルで CPU ユニットを設定しない場合は、コンテナ定義で指定した CPU 設定がスケジューリングに使用されます。 - CPU 要件を満たすよう、コンテナー定義パラメータを変更します。
注: CPU プロパティの値は、タスク定義のコンテナ定義 セクションで変更できます。このプロパティは、ECS コンテナエージェントがタスク用に予約している CPU ユニットの数に対応しています。EC2 インスタンスに残っている CPU ユニットの量は、少なくともコンテナ定義レベルの量と等しくなければなりません。EC2 インスタンスが持つことができる CPU ユニットの量は、クラスターで使用されるインスタンスタイプによって異なります。 - 追加のコンテナインスタンスをクラスターに追加します。
注: コンテナにもっと大きなインスタンスタイプを追加する必要があることもあります。大きなインスタンスタイプは大きなタスク用のインスタンスごとに、さらに多くの CPU ユニットを提供します。インスタンスタイプ別の CPU の可用性の詳細については、「Amazon EC2 インスタンスタイプ」をご参照ください。