我搜索了StackOverflow,发现大多数示例都在使用Boto,几乎已弃用。我试图列出使用Boto 3在过去24小时(例如昨天)创建的EBS快照。
import boto3
import json
import dateutil
from datetime import date, timedelta
import collections
def lambda_handler(event, context):
source_region = 'ap-southeast-1'
snapshot_client = boto3.client('ec2', source_region)
semalam = (date.today() - timedelta(1), '%Y-%m-%d')
ebsAllSnapshots = snapshot_client.describe_snapshots(OwnerIds=['self'])
for snaplist in ebsAllSnapshots['Snapshots']:
strdate = snaplist['StartTime'].date()
if (strdate <= semalam):
print snaplist['SnapshotId']
我得到的错误是TypeError: can't compare datetime.date to tuple
变量strdate确实返回了快照创建日期的列表,例如:
2018-06-10
2018-06-10
2018-06-10
答案 0 :(得分:0)
由于semalam是一个由日期值和在线组成的元组,因此您遇到此错误
if (strdate <= semalam):
您正在尝试将其与日期时间对象进行比较。 尝试遍历元组值,例如
strdate = snaplist['StartTime'].date()
for i in semalam:
if(strdate<=i):
proceed as usual
确保从datetime模块调用正确的方法