ECS on EC2 でタスクの実行に不足している属性を確認する方法を教えてください
困っていた内容
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
属性の設定方法は、次のブログが参考になると思います。
その他の属性が不足している場合は、次のドキュメントやそのリンク先等が参考になると思います。
サービスイベントメッセージ - Amazon Elastic Container Service
参考資料
足りない属性を見つけるには、ecs-cli check-attributes コマンドを実行します。