如何通过Python程序化生成并获取AWS Trusted Advisor组织报告?
生成AWS Trusted Advisor组织报告的可行方案
由于AWS没有提供直接生成组织级Trusted Advisor报告的API/SDK,以下是几个实用的自动化实现方案:
1. 基于AWS CLI + Python脚本汇总数据
利用AWS CLI的Trusted Advisor命令获取组织内的检查结果,再通过Python解析、汇总并生成报告:
- 前提:确保管理账户已启用Trusted Advisor组织视图,且执行脚本的身份拥有
TrustedAdvisorReadOnlyAccess和organizations:ListAccounts权限 - 核心步骤:
- 调用
aws trustedadvisor describe-trusted-advisor-checks获取所有检查项列表 - 遍历每个检查项,用
aws trustedadvisor describe-trusted-advisor-check-result获取组织级结果(管理账户下可直接查看跨账户汇总结果) - 用Python的
subprocess模块执行CLI命令,解析JSON输出后整理成CSV、Markdown或PDF格式的报告
- 调用
- 示例代码片段:
import subprocess import json import csv # 获取所有Trusted Advisor检查项 checks_cmd = ["aws", "trustedadvisor", "describe-trusted-advisor-checks", "--language", "zh"] checks_output = subprocess.run(checks_cmd, capture_output=True, text=True) checks = json.loads(checks_output.stdout)["checks"] # 准备报告数据 report_data = [] for check in checks: check_id = check["id"] # 获取检查结果 result_cmd = ["aws", "trustedadvisor", "describe-trusted-advisor-check-result", "--check-id", check_id] result_output = subprocess.run(result_cmd, capture_output=True, text=True) result = json.loads(result_output.stdout)["result"] # 提取关键信息 report_row = { "检查项名称": check["name"], "状态": result["status"], "警告资源数": result["flaggedResourcesCount"], "资源总数": result["resourcesProcessedCount"] } report_data.append(report_row) # 生成CSV报告 with open("ta_org_report.csv", "w", encoding="utf-8", newline="") as f: writer = csv.DictWriter(f, fieldnames=report_data[0].keys()) writer.writeheader() writer.writerows(report_data)
2. 用Lambda + CloudWatch Events实现定期自动生成
适合需要周期性生成报告的场景:
- 编写Lambda函数,通过boto3调用Trusted Advisor API获取组织级检查结果(需先通过AWS Organizations API获取成员账户列表,若需单账户明细)
- 将汇总后的结果保存到S3存储桶,可结合Python库(如
pdfkit、jinja2)生成HTML/PDF格式的汇报文件 - 配置CloudWatch Events规则,设置定时触发(比如每周一),自动执行Lambda生成报告
3. 模拟控制台操作(应急方案)
若上述方案无法满足需求,可临时用浏览器自动化工具模拟控制台操作:
- 用Selenium或Playwright模拟登录AWS Console,导航到Trusted Advisor组织报告页面,触发报告生成并下载
- 注意:该方案依赖控制台页面布局,易受AWS界面更新影响,维护成本高,仅适合临时应急场景
内容的提问来源于stack exchange,提问作者Abhijith
相关产品推荐
相关产品推荐

