AWS hat angekündigt, dass eines der auf der AWS Containers Roadmap meist angefragten ECS-Features ermöglicht wird: in Amazon ECS (Elastic Container Services) können ab sofort Task Definition Revisions gelöscht werden. Bisher konnten sie lediglich abgemeldet werden.
Durch die Neuerung wird das Ressourcenmanagement vereinfacht und der Sicherheitsstatus – sensible Daten können nun endgültig gelöscht werden – verbessert.
Wie kann die neue Funktionalität genutzt werden?
Durch Nutzen des DeleteTaskDefinition
-API können Task Definitions sowie inaktive Revisionen gelöscht werden. Dafür können sowohl die AWS CLI, das AWS CDK oder andere AWS SDKs verwendet werden.
Nutzen der AWS CLI
Um die Task Definitions mit Status INACTIVE
auszugeben, wird der folgende Befehl ausgeführt:
aws ecs list-task-definitions --status INACTIVE --no-cli-pager
Sollten Task Definitions mit Status ACTIVE
abgemeldet werden müssen, wird der folgende Befehl verwendet:
aws ecs deregister-task-definition --task-definition <task name:revision>
Im Anschluss kann die Revision mit folgendem Befehl gelöscht werden:
aws ecs delete-task-definitions --task-definitions <task name:revision>
Weitere News aus dem AWS-Universum
Bulk Actions
Ist jedoch eine große Menge an Revisionen abzumelden, sollte ein Script verwendet werden. Das erste Script führt eine Schleife aus und durchläuft die Revisionen, wobei sichergestellt wird, dass keine Drosselungsprobleme auftreten. Im Anschluss (Script 2) werden die Revisionen gelöscht.
Natürlich können zwei Scripte auch zu einem einzigen Script kombiniert werden. Ein Beispiel dafür findet ihr im dritten Listing.
#!/bin/bash -ex TASKNAME=<task name> START=1 # the first number of the task revision to loop through END=1000 # The last number to stop the delete loop at for (( x=$START; x<=$END; x++ )) do aws ecs deregister-task-definition --task-definition $TASKNAME:$x --no-cli-pager sleep 5 echo "The task $TASKNAME and revision $x has been deregistered" done
#!/bin/bash -ex TASKNAME=<task name> START=1 # the first number of the task revision to loop through END=1000 # The last number to stop the delete loop at for (( y=$START; y<=$END; x++ )) do aws ecs delete-task-definitions --task-definitions $TASKNAME:$y --no-cli-pager sleep 5 echo "The task $TASKNAME and revision $x has been deleted" done
#!/bin/bash -ex TASKNAME=<task name> START=1 # the first number of the task revision to loop through END=1000 # The last number to stop the delete loop at # This function will deregister the task definition for (( x=$START; x<=$END; x++ )) do aws ecs deregister-task-definition --task-definition $TASKNAME:$x --no-cli-pager sleep 5 echo "The task $TASKNAME and revision $x has been deregistered" done # This function will delete the task definition for (( y=$START; y<=$END; y++ )) do aws ecs delete-task-definitions --task-definitions $TASKNAME:$y --no-cli-pager sleep 5 echo "The task $TASKNAME and revision $y has been deleted" done
Nach einem Löschen von Revisionen, wechselt der Status von INACTIVE
zu DELETE_IN_PROGRESS
. Um das einzusehen oder zu überprüfen, kann das describeTaskDefinition
-API oder folgender Befehl verwendet werden:
aws ecs describe-task-definition --task-definition <task name:revision>
Außerdem können alle zur Löschung markierten Task Definitions abgerufen werden:
aws ecs list-task-definitions --status DELETE_IN_PROGRESS --no-cli-pager
Ausblick
Doch das ist nicht alles, was AWS in petto hat. Künftig soll es auch eine Möglichkeit geben, die Abmeldung und Löschung von Task Definitions mithilfe von Policies zu automatisieren.
Die offizielle Ankündigung von AWS findet ihr auf Amazon ECS unterstützt jetzt dass Löschen von Revisionen inaktiver Aufgabendefinitionen. Noch ausführlichere Informationen gibt es im Blogpost Announcing Amazon ECS Task Definition Deletion.
Schreibe einen Kommentar