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(差异和何时使用?)[关闭]