list aws EBS Volume if Tag (Date) <= "Value"

У меня есть вариант использования, когда мы помечаем том EBS датой после завершения работы связанного с ним экземпляра.

#!/bin/bash
dateToday=`date +'%Y-%m-%d'`
aws ec2 create-tags --resources $volume --tags Key=Date,Value=$dateToday

Теперь мне нужно удалить все тома EBS, дата которых на 3 дня старше, чем $dateToday.

dateToDelete=`date --date "3 days ago" +'%Y-%m-%d'
aws ec2 describe-volume  --query 'Volumes[?Tags[?Key == `Date`].Value)<='${dateToDelete}'] | [].[VolumeId]' --region eu-central-1 --profile aws_new_stage

Я пытаюсь выполнить это, но это приводит к ошибке.

1 ответ

Я думаю, что лучше всего отфильтровать все тома, в которых Date теги, затем проверяет сравнение даты.

вы можете попробовать ниже

#!/bin/sh
dateToDelete=`date --date "3 days ago" +'%Y-%m-%d'`

#volumes that has Date tag
volumes_id_with_date_tag_only=$(aws ec2 describe-volumes     --volume-ids --query 'Volumes[?not_null(Tags[?Key == `Date`].Value)].VolumeId' --output text)

#pass the list of that volumes and then remove volume with null tags using JQ
aws ec2 describe-volumes     --volume-ids $volumes_id_with_date_tag_only --query "Volumes[].{VolumeId:VolumeId,Tags:Tags[?Value <= \``echo $dateToDelete`\`].Value | [0]}" | jq .[] | jq 'select(.Tags != null)' | jq .VolumeId

Я не нашел способа удалить нулевые теги после получения желаемых томов с помощью jmespath

выход

  "VolumeId": "vol-0a367abcdf"
Другие вопросы по тегам