首页 > 解决方案 > 用于列出基于选择日期创建的 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

标签: pythonamazon-web-servicesboto3snapshot

解决方案


你正面临这个错误,因为 semalam 是一个由日期值和在线组成的元组,

if (strdate <= semalam):

您正在尝试将其与日期时间对象进行比较。尝试遍历元组值,例如,

strdate = snaplist['StartTime'].date()
for i in semalam:
   if(strdate<=i):
     proceed as usual

确保从 datetime 模块调用正确的方法


推荐阅读