如何统计指定时间段内AWS AppSync的API总请求数量
首先明确你的认知是正确的:AppSync 监控面板默认展示的3.4万峰值是单时间单位内的最高请求数,不是累计值,模块运行全周期的总请求数确实会远高于该峰值,你可以通过以下几种方式统计指定时间段的总请求数:
统计方法
方法1:通过CloudWatch指标直接求和(最快)
AppSync 会默认上报 GraphQLRequests 指标到 CloudWatch,直接操作即可拿到全量请求总数:
- 进入CloudWatch控制台,打开「指标」-「所有指标」,选择
AWS/AppSync命名空间 - 按API ID筛选你要统计的目标AppSync服务,勾选
GraphQLRequests指标 - 将时间范围调整为你模块测试的完整周期,把统计聚合函数从默认的
Maximum(最大值,也就是你看到的峰值)改为Sum(求和),调整统计周期为和你测试周期匹配的粒度,返回的数值就是这段时间内AppSync收到的总请求数。
方法2:通过日志过滤统计(更精准,可排除其他流量干扰)
如果你需要统计的是仅你的测试模块产生的请求数,排除其他环境流量的影响,可以用该方法:
- 测试前在模块发的所有AppSync请求头中加入自定义标识,比如
X-Test-Source: module-test - 提前开启AppSync的请求日志投递到CloudWatch Logs
- 测试结束后进入CloudWatch Logs Insights,选择AppSync对应的日志组,执行如下查询:
fields @timestamp | filter requestHeaders.X-Test-Source = "module-test" | stats count() as total_requests
返回的total_requests就是你的测试模块产生的精准总请求数。
方法3:通过X-Ray统计
如果你已经为AppSync开启了X-Ray追踪,也可以在X-Ray控制台筛选对应API的调用记录,直接聚合统计总调用量。
注意事项
GraphQLRequests指标默认统计所有类型的请求,包含Query、Mutation、Subscription的连接请求和消息推送请求,如果你需要统计某一类特定请求,可以拆分指标维度或者用日志过滤实现- 用Sum聚合指标时,注意时间范围要完全覆盖模块运行的全周期,不要出现时间窗口遗漏导致统计值偏低
内容的提问来源于stack exchange,提问作者Waleed Ahmad
相关产品推荐
相关产品推荐

