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

如何通过boto3(Python SDK)获取Lambda CloudWatch指标日志洞察

问题解决说明

核心认知澄清

MemoryUsedInMB 不是AWS/Lambda命名空间下的原生CloudWatch指标,无法直接通过get-metric-data接口获取。该值是Lambda每次执行结束后,自动写入CloudWatch Logs的REPORT日志行中的字段,对应日志字段为@maxMemoryUsed(单位为字节)。

原有配置的问题修正

你之前编写的get-metric-data配置存在两个问题,会导致查不到Lambda指标数据:

  • 缺少必填的维度参数:AWS/Lambda命名空间下的所有指标,必须至少指定FunctionName维度,值为你要查询的Lambda函数名称;如果需要查询指定版本/别名的指标,需要额外增加Resource维度,值格式为函数名:版本/别名。
  • 时间格式错误:接口要求的ISO时间格式后缀为时区标识(如UTC时区用Z),你之前写的0000后缀不符合格式规范。

修正后可正常查询Lambda原生指标(如你示例中的Invocations)的配置文件如下:

{
    "MetricDataQueries": [
        {
            "Id": "myRequest",
            "MetricStat": {
                "Metric": {
                    "Namespace": "AWS/Lambda",
                    "MetricName": "Invocations",
                    "Dimensions": [
                        {
                            "Name": "FunctionName",
                            "Value": "替换为你的目标Lambda函数名"
                        }
                    ]
                },
                "Period": 3600,
                "Stat": "Sum"
            },
            "Label": "myRequestLabel",
            "ReturnData": true
        }
    ],
    "StartTime": "2022-05-31T10:40:00Z",
    "EndTime": "2022-05-31T14:12:00Z"
}

对应的执行命令保持不变:

aws cloudwatch get-metric-data --cli-input-json file://test_file.json

获取MemoryUsedInMB的两种方案

方案1:直接通过CloudWatch Logs Insights查询(无需额外配置)

直接调用CloudWatch Logs接口查询日志提取字段即可,无需提前做指标转换。
查询语句示例:

fields @timestamp, @requestId, @maxMemoryUsed/1000/1000 as MemoryUsedInMB, @memorySize/1000/1000 as MemoryAllocatedInMB
| filter @type = "REPORT"
| sort @timestamp desc
| limit 20

对应的CLI执行命令:

aws logs start-query --log-group-name /aws/lambda/替换为你的目标Lambda函数名 --start-time 1653993600 --end-time 1654006320 --query-string 'fields @timestamp, @requestId, @maxMemoryUsed/1000/1000 as MemoryUsedInMB | filter @type = "REPORT" | sort @timestamp desc | limit 20'

执行后拿到查询ID,再调用aws logs get-query-results --query-id 替换为上一步返回的查询ID即可拿到具体的内存使用数据。

方案2:转为自定义指标后通过get-metric-data查询

如果你需要长期通过get-metric-data拉取该指标,可以在对应Lambda的日志组下配置指标过滤器,将日志中的@maxMemoryUsed字段提取为自定义命名空间下的指标,配置完成后就可以和查询原生Lambda指标一样,指定对应维度拉取MemoryUsedInMB数据。


内容的提问来源于stack exchange,提问作者S Shriram Chenniappa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 23:57:35