ECSタスク定義の一括登録解除がエラーになります

2021.09.20

困っていた内容

それまで使っていたステージ環境用のECSのタスク定義が不要になり、 マネジメントコンソールから登録解除しようとしています。

下記添付画像の「全選択」のチェックボックスをクリックして、 すべてのリビジョンを選択し「アクション」から「登録解除」を実行したのですが、下記のエラーが発生します。

ECS.TASK_DEF.DEREGISTER_FAIL のエラー

リビジョンに、1つずつチェックを入れて「登録解除」をクリックすればエラーは起きないのですが、 100リビジョン以上あるので、一括で削除したいです。 どのようにすればよいでしょうか?

どう対応すればいいの?

CloudTrailのイベント履歴からAPIの呼び出し履歴を確認すると、 マネジメントコンソールから実行された DeregisterTaskDefinition [1] の API 呼び出しで ThrottlingException のエラーが発生していました。

これは短時間に多数の API 呼び出しが行われた際に発生するエラーであり、 対策としては、API呼び出しの実行間隔を広げる必要があります。

現状では、マネジメントコンソールからのタスク定義の登録解除では、 適切な実行間隔を設定する機能が提供されていません。

回避策として、AWS CLI を用いた方法をお試しください。

for i in {1..100}; do aws ecs deregister-task-definition --task-definition <TASK_DEFINITION_NAME>:$i --no-cli-pager; sleep 1; done

上記のコマンドをローカルマシンのシェル、もしくは CloudShell で実行することで、複数リビジョンのタスク定義を、一括で登録解除することができます。

参考資料

[1]  DeregisterTaskDefinition