簡體   English   中英

python(boto3)程序刪除aws中的舊快照

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM