1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| import time from datetime import datetime, timezone from aliyunsdkcore.client import AcsClient from aliyunsdkcore.request import CommonRequest
client = AcsClient('<your-access-key-id>', '<your-access-key-secret>', 'cn-hangzhou')
def list_snapshots(): """ 查询快照列表 """ request = CommonRequest() request.set_domain('swas.cn-guangzhou.aliyuncs.com') request.set_version('2020-06-01') request.set_action_name('ListSnapshots') request.add_query_param('RegionId', 'cn-guangzhou') response = client.do_action_with_exception(request) return eval(response)
def delete_snapshot(snapshot_id): """ 删除指定快照 """ request = CommonRequest() request.set_domain('swas.cn-guangzhou.aliyuncs.com') request.set_version('2020-06-01') request.set_action_name('DeleteSnapshot') request.add_query_param('RegionId', 'cn-guangzhou') request.add_query_param('SnapshotId', snapshot_id) response = client.do_action_with_exception(request) return eval(response)
def convert_utc_to_timestamp(utc_time): """ 将UTC时间转换为时间戳 :param utc_time: UTC时间字符串,格式为ISO 8601 (yyyy-MM-ddTHH:mm:ssZ) :return: 时间戳(秒级) """ utc_datetime = datetime.strptime(utc_time, '%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=timezone.utc) return int(utc_datetime.timestamp())
def main(): snapshots = list_snapshots().get('Snapshots', []) current_time = time.time()
print("当前快照列表:") for snapshot in snapshots: snapshot_id = snapshot.get('SnapshotId', '未知') creation_time = snapshot.get('CreationTime', '未知') status = snapshot.get('Status', '未知')
if creation_time != '未知': creation_timestamp = convert_utc_to_timestamp(creation_time) time_diff = current_time - creation_timestamp days_diff = time_diff / (24 * 3600)
print(f"快照 ID: {snapshot_id}, 创建时间: {creation_time}, 状态: {status}, 存在时间: {days_diff:.2f} 天")
if days_diff > 3: print(f"快照 {snapshot_id} 已超过3天,正在删除...") delete_snapshot(snapshot_id) else: print(f"快照 {snapshot_id} 尚未超过3天,无需删除。") else: print(f"快照 {snapshot_id} 的创建时间未知,跳过处理。")
if __name__ == "__main__": main()
|