ECS on EC2 でタスクの実行に不足している属性を確認する方法を教えてください

2022.09.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

ECS on EC2 でコンテナを実行しています。ECS サービスを更新したところ、コンテナインスタンスの属性が不足している旨のサービスイベントメッセージが表示されました。 具体的に不足している属性を確認する方法を教えてください。

サービスイベントメッセージ

service hato-ecs-service was unable to place a task because no container instance met all of its requirements.
The closest matching container-instance abcdefg1234567890 is missing an attribute required by your task. For more information, see the Troubleshooting section.

どう対応すればいいの?

Amazon ECS CLI のcheck-attributesを実行してください。
※AWS CLI とは異なりますのでご注意ください。

実行例

$ ecs-cli check-attributes --container-instances abcdefg1234567890 \
    --cluster hato-windows-cluster \
    --region ap-northeast-1 \
    --task-def fluentd-test

Container Instance     Missing Attributes
hato-windows-instance  ecs.capability.task-eni

check-attributesコマンドは、指定したタスク定義のコンテナ実行に必要な属性と、コンテナインスタンスの属性を比較し、不足している属性を表示します。不足している属性の確認は、タスク定義で指定した属性と、コンテナインスタンスの属性を一つ一つ比較しても確認できますが、専用のコマンドが用意されているので、ぜひご利用ください。

やってみた

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

# ecs-cli --version
ecs-cli version 1.21.0 (bb0b8f0)

No such file or directoryなど未インストール(コマンドが存在しない)の場合は、Amazon ECS CLI のセットアップが必要です。
Amazon ECS CLI をインストールします。 - Amazon Elastic Container Service

check-attributesコマンドを実行します。

$ ecs-cli check-attributes --container-instances 【コンテナインスタンス ID】 \
    --cluster 【ECS クラスター名】 \
    --task-def 【ECS タスク定義名】

Container Instance     Missing Attributes
hato-windows-instance  ecs.capability.task-eni

※コンテナインスタンス ID はサービスイベントメッセージから確認できます。

今回の場合は、コンテナインスタンスにecs.capability.task-eni属性が不足しているようです。

ecs.capability.task-eni属性の設定方法は、次のブログが参考になると思います。

Windows コンテナを ECS on EC2 の awsvpc モードで missing an attribute required by your task のエラーでタスク起動できないときの原因と対処方法 | DevelopersIO

その他の属性が不足している場合は、次のドキュメントやそのリンク先等が参考になると思います。

サービスイベントメッセージ - Amazon Elastic Container Service

参考資料

足りない属性を見つけるには、ecs-cli check-attributes コマンドを実行します。