ECSタスク定義の一括登録解除がエラーになります
困っていた内容
それまで使っていたステージ環境用の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 で実行することで、複数リビジョンのタスク定義を、一括で登録解除することができます。