[英]python (boto3) program to delete old snapshots in aws
我已經編寫了一個刪除舊快照的程序。但現在的問題是,如果快照附加了ami,那么它不會被刪除,程序也會停止。它顯示以下消息:
botocore.exceptions.ClientError:調用DeleteSnapshot操作時發生錯誤(InvalidSnapshot.InUse):ami-12345正在使用快照snap-12345678
我希望程序單獨跳過這些快照並繼續刪除其他快照。 這是我的代碼如下:
import boto3
import datetime
client = boto3.client('ec2',region_name='us-west-1')
snapshots = client.describe_snapshots(OwnerIds=['12345678'])
for snapshot in snapshots['Snapshots']:
a= snapshot['StartTime']
b=a.date()
c=datetime.datetime.now().date()
d=c-b
if d.days>10:
id = snapshot['SnapshotId']
client.delete_snapshot(SnapshotId=id)
我自己解決了。 這是代碼:
import boto3
import datetime
client = boto3.client('ec2',region_name='us-west-1')
snapshots = client.describe_snapshots(OwnerIds=['12345678'])
for snapshot in snapshots['Snapshots']:
a= snapshot['StartTime']
b=a.date()
c=datetime.datetime.now().date()
d=c-b
try:
if d.days>10:
id = snapshot['SnapshotId']
client.delete_snapshot(SnapshotId=id)
except Exception,e:
if 'InvalidSnapshot.InUse' in e.message:
print "skipping this snapshot"
continue
感謝Vishal,正是我需要開始的。 由於符合要求,我做了一些調整。 我添加了一個例外,以保持所有備份的StartTime日期為該月的第1天。 我還添加了一個例外來保存我最早的快照集。
import boto3
import datetime
client = boto3.client('ec2',region_name='us-west-1')
snapshots = client.describe_snapshots(OwnerIds=['111111111111'])
def lambda_handler(event, context):
for snapshot in snapshots['Snapshots']:
a=snapshot['StartTime']
b=a.date()
c=datetime.datetime.now().date()
d=c-b
f=a.day
excludeDate=datetime.datetime.strptime('2018-1-10', '%Y-%m-%d').date()
try:
if d.days>30 and f!=1 and b!=excludeDate:
id = snapshot['SnapshotId']
client.delete_snapshot(SnapshotId=id)
except Exception,e:
if 'InvalidSnapshot.InUse' in e.message:
print "skipping this snapshot"
continue
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.