首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除未使用的亚马逊EC2快照

删除未使用的亚马逊EC2快照
EN

Stack Overflow用户
提问于 2016-05-04 18:47:13
回答 1查看 726关注 0票数 0

由于亚马逊从EC2-ami工具转向awscli (检查),Robert的解决方案不再被接受。

因此,我决定为新的python/json标准重写他的脚本。

请随意提出任何问题或提供解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-04 18:47:13

请正确安装和配置阿夫斯克利。对于MacOS,我推荐酿制版本。

安装后不要忘记运行aws configure

对我来说是完美无缺的,但无论如何,你要冒着自己的风险使用它。

代码语言:javascript
复制
import json, subprocess

def remove_unused_snaps(region):
    line = 'aws ec2 describe-images --region {} --owners self'.format(region)
    p = subprocess.Popen(line.split(),
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = p.communicate()
    obj = json.loads(out.decode("utf-8"))

    snaps_used = set(i['BlockDeviceMappings'][0]['Ebs']['SnapshotId'] for i in obj['Images'])

    line = 'aws ec2 describe-snapshots --region {} --owner-ids self'.format(region)
    p = subprocess.Popen(line.split(),
                         stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = p.communicate()
    obj = json.loads(out.decode("utf-8"))

    snaps_old = set(i['SnapshotId'] for i in obj['Snapshots'])

    line = 'aws ec2 delete-snapshot --region {} --snapshot-id'.format(region)
    for snap in list(snaps_old - snaps_used):
        p = subprocess.Popen(line.split() + [snap],
                             stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out, err = p.communicate()
        print(snap, out, err)

然后运行它:remove_unused_snaps('us-west-2')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37035646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档