CLI导出快照的详细信息
aws ec2 describe-snapshots \
--owner-ids self \
--query "Snapshots[*].[SnapshotId,VolumeSize,VolumeId,Description,StartTime]" \
--output json > snapshots_info.json
使用Python脚本将json内容,指定表头写入excel表格
import json
import csv
from dateutil import parser
import pytz
# 读取 JSON 文件
with open('snapshots_info.json', 'r', encoding='utf-8') as file:
snapshot_data = json.load(file)
# 定义CSV头部
fields = ['快照 ID', '快照大小 (GiB)', '源卷ID', '卷大小 (GiB)', '快照启动时间', '快照描述']
# 准备写入CSV
with open('snapshots_info.csv', 'w', newline='', encoding='utf-8-sig') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(fields)
# 遍历每个快照并写入 CSV
for snapshot in snapshot_data:
snapshot_id = snapshot[0] if snapshot[0] else ''
volume_size_gb = snapshot[1] if len(snapshot) > 1 and snapshot[1] else ''
volume_id = snapshot[2] if len(snapshot) > 2 and snapshot[2] else ''
description = snapshot[3] if len(snapshot) > 3 and snapshot[3] else ''
start_time_utc = snapshot[4] if len(snapshot) > 4 and snapshot[4] else ''
# 快照大小与卷大小相同(以 GiB 为单位)
snapshot_size_gb = volume_size_gb
# 将 UTC 时间转换为中国标准时间 (CST, UTC+8)
if start_time_utc:
utc_dt = parser.parse(start_time_utc)
cst_tz = pytz.timezone('Asia/Shanghai') # 获取中国标准时间时区
start_time_cst = utc_dt.astimezone(cst_tz).strftime('%Y-%m-%d %H:%M:%S GMT+0800 (中国标准时间)') # 转换为 CST 并格式化输出
else:
start_time_cst = ''
# 写入行
writer.writerow([
snapshot_id, # 快照 ID
snapshot_size_gb, # 快照大小 (GiB)
volume_id, # 源卷ID
volume_size_gb, # 卷大小 (GiB)
start_time_cst, # 快照启动时间
description # 快照描述
])
print("快照信息已成功提取并保存到 snapshots_info.csv 文件中。")
最终结果展示:
