亚马逊云国际站 AWS亚马逊云如何查看操作日志
你有没有过这种经历——一觉醒来,EC2实例没了,RDS数据库挂了,S3里昨天还在的财务报表文件凭空消失……你抓着咖啡杯盯着控制台发呆,心里默念:"到底是谁干的?是我?是同事?还是那个刚入职、连IAM策略都分不清的实习生?"
别慌。AWS不是黑箱,它早给你悄悄记了一本“小账本”——CloudTrail操作日志。它不光记“谁干了啥”,还记“啥时候干的”“从哪儿干的”“用的啥IP”“传了啥参数”。说白了,就是AWS版《福尔摩斯探案集》,而你,就是那个刚拿到放大镜的华生。
第一步:确认——你的日志,真的开了吗?
很多人的第一反应是冲进CloudTrail控制台狂点“查看事件”,结果页面空空如也,像走进一家打烊的便利店。先别怀疑人生,大概率是你家的日志“还没上户口”——CloudTrail默认不自动开启。
打开AWS控制台 → 搜索“CloudTrail” → 进入服务页。如果看到“您尚未创建跟踪”的大字报,恭喜,你成功卡在了起跑线。别急着新建,先问自己三个问题:
- 亚马逊云国际站 只看当前区域?比如你在东京建了个Lambda,却在弗吉尼亚查日志——相当于去北京派出所调上海的监控,注定扑空。
- 要管全账号,还是只盯某几个服务?比如你只想审计S3删除动作,没必要让EC2重启、Route53改DNS这些日志塞满存储桶。
- 日志存哪儿?S3桶有没有开版本控制?(划重点!)没开版本控制的S3桶,一旦日志被覆盖或误删,就真·石沉大海了——这事儿我亲眼见过,一位运维小哥删库后发现日志桶也没开版本,当场给咖啡机鞠了一躬。
✅ 正确姿势:创建多区域跟踪(Multi-Region Trail),勾选“将事件传递到CloudWatch Logs”(方便实时告警),S3目标桶务必提前开启版本控制+生命周期策略(比如保留90天,避免账单爆炸)。
第二步:找日志——不是“搜索”,是“钓鱼”
日志开了≠能马上破案。CloudTrail每秒可能产生成百上千条事件,直接翻页等于在太平洋里捞针。记住口诀:时间 + 资源 + 动作 + 账号四要素齐飞。
举个真实案例:客户反馈“生产环境的ALB监听器突然失效”。我们没瞎猜,而是这样钓:
- 锁定时间:ALB出问题的时间点前后15分钟(网络延迟、时区误差得留余量);
- 锁定资源:ALB的ARN(arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:loadbalancer/app/my-prod-alb/xxx);
- 锁定动作:关键词搜
ModifyListener或DeleteListener; - 锁定身份:一看是
arn:aws:iam::123456789012:user/devops-lee,再一看IP是公司VPN出口段——真相大白:Lee同学凌晨三点写脚本时把--listener-arns参数写错了,批量覆盖了监听器。
💡 小技巧:在CloudTrail事件列表页,点击右上角“创建CloudTrail事件查询”,它会自动生成结构化查询语句。比如你想查所有Delete*开头的操作:{ "eventSource": "ec2.amazonaws.com", "eventName": "Delete*" }
比手动翻页快十倍,且支持正则(DeleteSnapshot|DeleteVolume)。
第三步:读日志——别被JSON吓退,重点看这五行
点开一条事件,密密麻麻的JSON看得人头皮发紧。其实90%的破案线索藏在这五处:
| 字段 | 看啥 | 例子 & 人话解读 |
|---|---|---|
userIdentity.arn | 谁干的 | arn:aws:sts::123456789012:assumed-role/ProdAdminRole/i-0abc123 → 是某个EC2实例用角色干的,不是真人 |
sourceIPAddress | 从哪儿干的 | 203.0.113.45 → 查企业防火墙日志,确认是否异常出口;127.0.0.1?警惕本地代理或恶意脚本 |
requestParameters | 干了啥细节 | {"bucketName":"finance-reports","key":"Q3-2024.xlsx"} → 明确删的是哪个文件,不是“随便删删” |
errorCode/errorMessage | 失败原因 | AccessDenied + Not authorized to perform sts:AssumeRole → 权限配置漏了,不是代码bug |
eventID | 唯一身份证 | 复制这个ID,在CloudTrail控制台右上角“按事件ID搜索”,秒定位原始记录(比Ctrl+F靠谱一万倍) |
第四步:防患未然——别等删库才想起日志
最后送你三条血泪经验:
- 日志≠摆设,要联动:把CloudTrail投递到CloudWatch Logs后,立刻配一个告警规则——比如只要出现
DeleteBucket或TerminateInstances,立刻钉钉/邮件轰炸负责人。别让“事后诸葛亮”变成“事前稻草人”。 - 定期“洗日志”:每月初导出上月关键事件(用AWS CLI:
aws cloudtrail lookup-events --lookup-attributes AttributeKey=EventName,AttributeValue=DeleteBucket --start-time $(date -d 'last month' +%Y-%m-%d)T00:00:00Z),做成PDF发给安全组,既留痕又促整改。 - 新人入职第一课,不是学Lambda,是学查日志:让他们亲手删一个测试S3对象,再教他们从日志里找回操作者、时间、IP——比讲一百遍IAM策略都管用。
所以,下次再遇到“神秘消失”的资源,别先骂AWS,先泡杯茶,打开CloudTrail,输入时间戳,点下搜索键——那本AWS偷偷写的《嫌疑人X的献身》,正静静躺在S3里等你翻开第一页。
(P.S. 如果你试了还是找不到日志,请检查:①跟踪是否处于“运行中”状态(不是“已停止”);②S3桶策略是否允许CloudTrail写入;③是不是在错误区域的CloudTrail里找跨区域事件。这三个坑,我替你们都踩过了。)

