Python boto Purging Aws old Ebs Snapshots “TypeError: unsupported operand type(s) for -: 'unicode' and 'datetime.timedelta'”
我正在尝试编写一个python脚本来删除14天前的ebs快照。问题是我无法显示2周前的日期并将其与当前日期进行比较。下面是我的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | 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) |
错误:
回溯(最近一次呼叫的最后一次):file"/home/swaroop/documents/my_python/display_snapshots.py",第28行,in旧日期=列表。开始时间-时间增量(天=14)类型错误:不支持-:"unicode"和"datetime.timedelta"的操作数类型
注:快照显示日期格式:2013-12-19t11:11:43.000z
谢谢施华洛普。
在代码中,
您需要将其转换为datetime.timedelta
喜欢
1 | from dateutil import parser |
和
1 2 3 4 5 | 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) |
号
注:首先可以尝试使用