Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.41 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Usage: $0 {days} [--delete]
  4. # Script searches for images pushed to ECR older than specified (default is 30 days)
  5. # Checks if image is not running in any ECS container and then prints deletion command
  6. # or deletes it directly.
  7. #
  8. # Script needs working AWSCLI config (`aws configure`) to function
  9.  
  10. DAYS=${1:-"30"}
  11. THRESHOLD=$(date -d "$DAYS days ago" +%s)
  12. RUNNING=`mktemp` || exit 1
  13.  
  14. echo --------------
  15. echo Searching for running containers
  16. aws ecs list-clusters | while read clsTag clsArn; do
  17. echo Found cluster $clsArn
  18. aws ecs list-tasks --cluster "$clsArn" --desired-status RUNNING --output text | while read tskTag tskArns; do
  19. echo Found taskArn $tskArns
  20. aws ecs describe-tasks --cluster "$clsArn" --tasks "$tskArns" --output text | while read -a tskInfo; do
  21. if [[ ${tskInfo[0]} == "TASKS" ]]; then
  22. tskDefArn=${tskInfo[9]};
  23. echo "Found TaskDefinitionArn $tskDefArn"
  24. aws ecs describe-task-definition --task-definition "$tskDefArn" | while read -a tskDefInfo; do
  25. if [[ ${tskDefInfo[0]} == "CONTAINERDEFINITIONS" ]]; then
  26. imgTag=${tskDefInfo[3]}
  27. echo -n "Found tagged image $imgTag"
  28. IFS='/:' read repoUri repoName imgTag <<< "$imgTag"
  29. echo " Repository:$repoName Tag:$imgTag"
  30. aws ecr describe-images --repository-name $repoName --image-ids "imageTag=$imgTag" | while read imgTag imgDigest _; do
  31. if [[ $imgTag == "IMAGEDETAILS" ]]; then
  32. echo Image digest: $imgDigest;
  33. echo $imgDigest >> $RUNNING;
  34. fi
  35. done
  36. fi
  37. done
  38. fi
  39. done
  40. done
  41. done
  42.  
  43. echo --------------
  44. echo Searching images older than `date -d "$DAYS days ago"` \($THRESHOLD\)
  45.  
  46. aws ecr describe-repositories --output text | while read repoTag repoCreated registryId repoArn repoName repoUri ; do
  47. echo Found repository $repoName
  48. aws ecr describe-images --repository-name $repoName --output text | while read imgTag imgDigest imgCreated imgSize ; do
  49. if [[ $imgTag = 'IMAGEDETAILS' && ($imgCreated < $THRESHOLD) ]]; then
  50. echo -n Found image $imgDigest
  51. if grep -q $imgDigest $RUNNING; then
  52. echo "...image is running. Skipped."
  53. else
  54. if [[ $2 == "--delete" ]]; then
  55. echo "...deleting!"
  56. aws ecr batch-delete-image --repository-name $repoName --image-ids "imageDigest=$imgDigest"
  57. else
  58. echo "...should be deleted."
  59. echo aws ecr batch-delete-image --repository-name $repoName --image-ids "imageDigest=$imgDigest"
  60. fi
  61. fi
  62. fi
  63. done
  64. done
  65.  
  66. rm -f $RUNNING
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement