ECS on EC2 で check-attributes コマンドが「None」になったときの対処方法

2023.11.07

困っていた内容

ECS on EC2 で、必要な属性が不足している旨のエラーイベントが記録されました。
check-attributes コマンドで不足している属性を確認しましたが、なし(None)でした。
対処法を教えてください。

check-attributesの結果

$ ecs-cli check-attributes --container-instances abcd \
    --cluster hato-ec2-cluster  \
    --task-def hato-taskdefinition

Container Instance  Missing Attributes
hato-ec2-cluster    None

どう対応すればいいの?

コンテナインスタンスと ECS サービスのサブネットを確認してください。

タスク定義で awsvpc ネットワークモードを指定している場合、ECS サービス設定でサブネットを指定します。ECS タスクは指定したサブネットに配置されますが、該当サブネットにコンテナインスタンスがない場合、属性不足のイベントが記録されます。

イベント例

service hato-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 of the Amazon ECS Developer Guide.

上記状況の場合、check-attributes コマンドはNoneとなるため ECS サービスのネットワーク設定で指定したサブネットに、コンテナインスタンスが実行されているか確認してください。

なお、ECS サービス指定のサブネットは「ネットワーキング」タブから確認できます。

コンテナインスタンスが実行されているサブネットは、「ネットワーキング」タブから確認できます。

サブネット内で実行されているインスタンスの確認は、フィルタリング機能もご利用ください。

参考:リソースの一覧表示およびフィルタリング - Amazon Elastic Compute Cloud

参考資料

Amazon ECS サービスは、コンテナインスタンスのサブネットとは異なるサブネットで実行するように設定できます。この場合、タスクが属性欠落エラーで失敗しても、ecs-cli-check-attributes コマンドの出力は、属性欠落のために None と表示されます。サービスとコンテナインスタンスのサブネットが一致していることを確認してください。

タスクの実行時またはサービスの作成時に、タスクを配置する 1 つ以上のサブネットを含むネットワーク設定を指定します。同時に、ENI にアタッチする 1 つ以上のセキュリティグループも指定します。タスクは、これらのサブネットとして、同じアベイラビリティーゾーン内の適切な Amazon EC2 インスタンスに配置されます。