繁体   English   中英

如果标签(日期)<=“值”,则列出 aws EBS 卷

[英]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

现在我必须删除日期比 $dateToday 早 3 天的所有 EBS 卷。

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

我正在尝试执行此操作,但会导致错误。

我认为最好的方法是过滤所有具有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 获得所需的卷后,我没有找到删除null标记的方法

output

  "VolumeId": "vol-0a367abcdf"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM