список aws Объем EBS, если Тег (Дата) <= "Значение" - PullRequest
1 голос
/ 07 августа 2020

У меня есть вариант использования, когда мы помечаем том 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 Ответ

0 голосов
/ 08 августа 2020

Я думаю, что лучший способ - отфильтровать все тома с тегами 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

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

output

  "VolumeId": "vol-0a367abcdf"
...