python - 用于列出基于选择日期创建的 EBS 快照的 python 脚本
问题描述
我通过 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
解决方案
你正面临这个错误,因为 semalam 是一个由日期值和在线组成的元组,
if (strdate <= semalam):
您正在尝试将其与日期时间对象进行比较。尝试遍历元组值,例如,
strdate = snaplist['StartTime'].date()
for i in semalam:
if(strdate<=i):
proceed as usual
确保从 datetime 模块调用正确的方法