Python 如果快照的卷已删除,请删除快照

Python 如果快照的卷已删除,请删除快照,python,amazon-web-services,amazon-ec2,aws-lambda,aws-ebs,Python,Amazon Web Services,Amazon Ec2,Aws Lambda,Aws Ebs,我需要删除其EBS卷被删除的弹性块存储卷的快照。我想使用Lambda函数来实现这一点。我写了一个脚本,如果EBS卷不存在,它将给我false。如何修改它以删除任何相关快照 def get_snapshots(): account_ids = list() account_ids.append( boto3.client('sts').get_caller_identity().get('Account')) return ec2.describe_snapshots(Ow

我需要删除其EBS卷被删除的弹性块存储卷的快照。我想使用Lambda函数来实现这一点。我写了一个脚本,如果EBS卷不存在,它将给我false。如何修改它以删除任何相关快照

def get_snapshots():
    account_ids = list()
    account_ids.append( boto3.client('sts').get_caller_identity().get('Account'))
    return ec2.describe_snapshots(OwnerIds=account_ids)
 
def volume_exists(volume_id):
    if not volume_id: return ''
    try:
        ec2.describe_volumes(VolumeIds=[volume_id])
        return True
    except ClientError:
        return False
 

 
def lambda_handler(event, context):

    with open('/tmp/report.csv', 'w') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow([
        'volume exists'
        ])
        snaps = get_snapshots()
        
        for snap in snaps.get('Snapshots'):
            writer.writerow([
            
            str(volume_exists(snap['VolumeId']))
            ])

有什么建议吗?

这里有一些代码可以删除没有现有卷的快照:

导入boto3
ec2_client=boto3.client('ec2')
#列出现有卷
卷\u响应=ec2\u客户端。描述\u卷()
卷=[volume['VolumeId']表示卷响应中的卷['volumes']]
#查找不存在卷的快照
快照\u响应=ec2\u客户端。描述\u快照(ownerID=['self'])
对于快照_响应['Snapshots']中的快照:
如果快照['VolumeId']不在卷中:
删除\u响应=ec2\u客户端。删除\u快照(快照ID=快照['SnapshotId'])
或者,这里有一个使用
资源
而不是
客户端
的版本:

导入boto3
ec2_resource=boto3.resource('ec2')
#列出现有卷
all_volumes=ec2_resource.volumes.all()
卷=[volume.volume\u所有卷中的卷id]
#查找不存在卷的快照
snapshots=ec2_resource.snapshots.filter(OwnerIds=['self'])
对于快照中的快照:
如果snapshot.volume\u id不在卷中:
snapshot.delete()
如果它们按照您的意愿工作,则需要将其合并到Lambda函数中


(除了根据本网站服务条款授予的许可外,本文内容还根据MIT-0获得许可。)

实现这一点的最佳方法是创建“EBS delete”云监视事件并触发lambda。lambda中事件的有效负载为您提供有关已删除卷的所有信息。从那里你可以查询snasphot并删除它们

为此,请转到Cloudwatch->Events->Rules并创建一个新规则,如下面的屏幕截图所示:


在那里,您还可以附加lambda。我总是走活动的道路。

请阅读。什么是“快照”?什么快照?什么是“体积”?您已经将其标记为,但是AWS非常庞大,有许多服务。我们只有你给我们的信息。我已经做了更改,谢谢