【问题标题】:list aws EBS Volume if Tag ( Date ) < = "Value"如果标签(日期)<=“值”,则列出 aws EBS 卷
【发布时间】:2023-03-22 22:05:01
【问题描述】:

我有一个用例,一旦关联实例终止,我们就用日期标记 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

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

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-cli amazon-ebs


    【解决方案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"
    

    【讨论】:

      猜你喜欢
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2017-12-10
      • 2013-07-26
      • 1970-01-01
      • 2016-07-09
      相关资源
      最近更新 更多