You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CloudWatch LogsGroup中保存Athena查询内容、执行用户等信息

Athena查询日志补全字段实现方案

结论:可以实现,原生EventBridge直接推送的Athena状态变更事件默认不包含你需要的三类字段,需要通过Lambda二次加工后写入CloudWatch日志组

核心原理

你当前收到的事件中包含唯一标识queryExecutionId,通过该ID调用Athena的get_query_executionAPI即可获取所有缺失的信息:

  • 实际执行的SQL请求内容:对应API返回结果的QueryExecution.Query字段
  • 请求执行相关时间:请求发起时间对应QueryExecution.Status.SubmissionDateTime,查询总耗时对应QueryExecution.Statistics.TotalExecutionTimeInMillis
  • 执行请求的用户身份:对应QueryExecution.ExecutionParameters.Principal字段,为发起查询的IAM身份ARN

具体实现步骤

  • 调整原有EventBridge规则的目标配置:删除直接推送至CloudWatch日志组的目标,新增触发Lambda函数的目标
  • 配置Lambda的执行权限:给Lambda对应的IAM角色添加athena:GetQueryExecution和logs:PutLogEvents权限
  • 编写Lambda处理逻辑:
    1. 解析收到的Athena状态变更事件,提取queryExecutionId和原有事件字段
    2. 调用get_query_execution接口拉取查询元数据,提取你需要的三个补充字段
    3. 拼接原有事件和补充字段,生成完整的日志结构
    4. 调用CloudWatch Logs的put_log_events接口,将完整日志写入你指定的日志组
  • 可选优化:在Lambda中增加状态判断逻辑,仅当查询进入SUCCEEDED/FAILED/CANCELLED终态时才写入日志,避免重复写入QUEUED、RUNNING状态的冗余数据

内容的提问来源于stack exchange,提问作者Mitsukk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:39:00