使用Python Boto3获取AWS Lambda的CloudWatch指标返回空数据怎么办?
解决AWS Lambda调用指标返回空Datapoints的问题
我尝试通过代码获取AWS Lambda的调用指标(Invocations),但返回响应中的Datapoints为空,不过已确认该Lambda函数确实有调用记录。
运行的代码
import boto3 from datetime import datetime, timedelta # 需先初始化CloudWatch客户端 client = boto3.client('cloudwatch') response = client.get_metric_statistics( Namespace='AWS/Lambda', MetricName='Invocations', Dimensions=[ { 'Name': 'lambda', 'Value': 'my_lambda_name' }, ], StartTime=datetime(2022, 10, 6), EndTime=datetime(2022, 10, 8), Period=300, Statistics=[ 'Sum' ], #Unit='Count/Second' #Unit='Count' ) response
返回的空响应
{'Label': 'Invocations', 'Datapoints': [], 'ResponseMetadata': {'RequestId': 'd18c70ee-dedd-410f-afc1-4c32f726175c', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'd18c70ee-dedd-410f-afc1-4c32f726175c', 'content-type': 'text/xml', 'content-length': '334', 'date': 'Fri, 07 Oct 2022 21:29:50 GMT'}, 'RetryAttempts': 0}}
问题原因及修复方案
核心问题是维度名称错误:AWS Lambda的Invocations指标对应的维度名称是FunctionName,而非代码中写的lambda。
修改后的维度配置:
Dimensions=[ { 'Name': 'FunctionName', 'Value': 'my_lambda_name' }, ],
额外注意事项
- 确保
my_lambda_name是Lambda函数的准确名称,AWS资源名称区分大小写 - CloudWatch指标存在1-5分钟的延迟,无法实时查询刚产生的调用数据
Period参数必须是60的倍数,300秒(5分钟)符合要求- 可以取消注释
Unit='Count',与Invocations指标的单位匹配
内容的提问来源于stack exchange,提问作者ambigus9
相关产品推荐
相关产品推荐

