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

如何通过Boto3获取AWS Lambda函数的最近执行时间?

AWS Lambda调用指标查询返回空数据点问题排查

问题描述

我希望获取AWS Lambda函数的最近执行时间(过去6天内的),编写了以下Boto3代码,但未得到任何数据点:

metric = cw_client.get_metric_statistics(
    Namespace = 'AWS/Lambda',
    MetricName = 'Invocations',
    Dimensions = [
        {
            'Name': 'FunctionaName',
            'Value': 'B2B-Masters-Aggregate'
        }
    ],
    StartTime = datetime.utcnow() - timedelta(days=6),
    EndTime = datetime.utcnow(),
    Period = 300,
    Statistics = ['SampleCount'],
    Unit = 'Count'
)

返回结果:

{'Label': 'Invocations', 'Datapoints': [], 'ResponseMetadata': {'RequestId': '2209b9fd-b11a-4f54-aeef9f4853fb', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '2209b9fd-b11a-4f54-aeef9f4853fb', 'content-type': 'text/xml', 'content-length': '334', 'date': 'Fri, 27 Oct 2023 15:39:54 GMT'}, 'RetryAttempts': 0}}

从控制台可见该函数半小时前刚执行过,尝试get_metric_data()方法后结果仍为空。


问题原因及解决方案

1. 核心错误:维度名称拼写错误

代码中维度名称写成了FunctionaName,正确的CloudWatch Lambda维度名称是FunctionName(少了一个字母l)。维度名称是严格大小写敏感且必须完全匹配的,拼写错误会导致无法定位到目标函数的指标数据。

2. 修正后的代码

metric = cw_client.get_metric_statistics(
    Namespace='AWS/Lambda',
    MetricName='Invocations',
    Dimensions=[
        {
            'Name': 'FunctionName',  # 修正拼写错误
            'Value': 'B2B-Masters-Aggregate'
        }
    ],
    StartTime=datetime.utcnow() - timedelta(days=6),
    EndTime=datetime.utcnow(),
    Period=300,
    Statistics=['SampleCount'],
    Unit='Count'
)

3. 额外排查点

  • 版本/别名维度:如果你的Lambda函数使用了别名或特定版本,需要添加Resource维度,值格式为函数名:别名或函数名:版本号,否则只能查询到未指定版本的默认指标。
  • 指标延迟:CloudWatch指标存在最多15分钟的生成延迟,若函数刚执行完成,需等待片刻再查询。
  • 区域一致性:确认cw_client初始化时指定的区域与Lambda函数所在区域完全一致,跨区域查询会返回空数据点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 14:42:52