Python boto Purging Aws старых снимков Ebs TypeError: неподдерживаемые типы операндов для -: 'unicode' и 'datetime.timedelta'

Я пытаюсь написать сценарий python для удаления снимков ebs, которым 14 дней. Проблема в том, что я не смог отобразить дату, которой 2 недели, и сравнить ее с текущей датой. Ниже мой код

import boto
import dateutil.relativedelta
from boto.exception import EC2ResponseError
from datetime import timedelta, datetime

conn = boto.ec2.connect_to_region(
    'us-east-1',
    aws_access_key_id = 'xxxxxxxxxxxxx',
    aws_secret_access_key = 'yyyyyyyyyyyyyyyyyy',
 )

snaps = conn.get_all_snapshots()

for list in snaps:
    old_date = list.start_time - timedelta(days=14)
    if list.start_time (is less than or equal to) old_date:
       print conn.delete_snapshots(list.id)

Ошибка:

Отслеживание (последний вызов последним): файл "/home/swaroop/Documents/My_python/display_snapshots.py", строка 28, в old_date = list.start_time - timedelta (days = 14) TypeError: неподдерживаемые типы операндов для - : "Юникод" и "datetime.timedelta"

Примечание. Снимки отображают дату в следующем формате: 2013-12-19T11: 11: 43.000Z

Спасибо

Сваруп.


person Swaroop Kundeti    schedule 24.01.2014    source источник


Ответы (1)


В вашем коде list.start_time возвращает дату и время начала как строку Unicode.

Вам нужно преобразовать его в datetime.timedelta

нравиться

from dateutil import parser

а также

for snap in snaps:
    limit = datetime.now() - timedelta(days=14)
    if parser.parse(snap.start_time).date() <= limit.date():
        #do your filter stuff here
        print conn.delete_snapshot(snap.id)

Примечание: сначала вы можете попробовать с print snap.id, если он вернет действительный результат, вы можете сделать print conn.delete_snapshot(snap.id)

person Syed Habib M    schedule 24.01.2014
comment
Спасибо за помощь syed, его ошибка выдачи Когда я выполнял с conn.delete_snapshots (snap.id) Ошибка: AttributeError: объект 'EC2Connection' не имеет атрибута 'delete_snapshots' - person Swaroop Kundeti; 24.01.2014
comment
Извините, попробуйте с conn.delete_snapshot(snap.id) - person Syed Habib M; 24.01.2014
comment
Большое вам спасибо. Это сработало как шарм. К сожалению, я не смог проголосовать за это, так как я новичок в stackoverflow и имею меньшую репутацию. Спасибо еще раз - person Swaroop Kundeti; 24.01.2014