python AWS EBS - 查找未使用的快照 - 此脚本生成有关快照使用情况的csv raport

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python AWS EBS - 查找未使用的快照 - 此脚本生成有关快照使用情况的csv raport相关的知识,希望对你有一定的参考价值。

import re
import boto3
import csv
from botocore.exceptions import ClientError

ec2 = boto3.client('ec2')

def get_snapshots():
    return ec2.describe_snapshots(OwnerIds=['self'])['Snapshots']

def volume_exists(volume_id):
    if not volume_id: return ''
    try:
        ec2.describe_volumes(VolumeIds=[volume_id])
        return True
    except ClientError:
        return False

def instance_exists(instance_id):
    if not instance_id: return ''
    try:
        ec2.describe_instances(InstanceIds=[instance_id])
        return True
    except ClientError:
        return False

def image_exists(image_id):
    if not image_id: return ''
    try:
        ec2.describe_images(ImageIds=[image_id,])
        return True
    except ClientError:
        return False

def parse_description(description):
    regex = r"^Created by CreateImage\((.*?)\) for (.*?) "
    matches = re.finditer(regex, description, re.MULTILINE)
    for matchNum, match in enumerate(matches):
        return match.groups()
    return '', ''

def main():
    with open('raport.csv', 'w') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([
            'snapshot id',
            'description',
            'started',
            'size',
            'volume',
            'volume exists',
            'instance',
            'instance exists',
            'ami',
            'ami exists'])
        for snap in get_snapshots():
            instance_id, image_id = parse_description(snap['Description'])
            writer.writerow([
                snap['SnapshotId'],
                snap['Description'],
                snap['StartTime'],
                str(snap['VolumeSize']),
                snap['VolumeId'],
                str(volume_exists(snap['VolumeId'])),
                instance_id,
                str(instance_exists(instance_id)),
                image_id,
                str(image_exists(image_id)),
            ])

if __name__ == '__main__':
    main()

以上是关于python AWS EBS - 查找未使用的快照 - 此脚本生成有关快照使用情况的csv raport的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 METEOR_SETTINGS 环境变量在 AWS/EBS 上配置 Meteor

AWS 备份查询 (EC2/EBS)

AWS SSM 发送命令来分离 EBS 存储?

将内容从旧 EBS 卷复制到 AWS 中的新 Nitro 系统 EBS 的最佳方式(最简单/最快)?

使用 AWS Cookbook InvalidInstanceIDNotFound 的 Chef EC2 EBS 卷

AWS EFS vs EBS vs S3(差异和何时使用?)[关闭]