当使用AWS-SDK Cloudwatch中的getMetricStatistics功能查询时间段内的数据时,若查询的时间范围超出了允许的最大范围,则会出现MaxQueryTimeRangeExceed错误。要解决这个问题,需要将查询的时间范围缩小或者增大允许的最大范围。
以下是一个示例代码解决MaxQueryTimeRangeExceed错误的方法:
import boto3
from datetime import datetime, timedelta
cloudwatch = boto3.client('cloudwatch', region_name='us-east-1')
metric_name = 'DiskSpaceUtilization'
namespace = 'AWS/EC2'
instance_id = 'i-0123456789abcdef'
# 获取当前时间
end_time = datetime.utcnow()
# 查询两小时前至现在的数据
start_time = end_time - timedelta(hours=2)
# 查询指定时间范围内的数据,如果时间范围太大会出现MaxQueryTimeRangeExceed错误
response = cloudwatch.get_metric_statistics(
Namespace=namespace,
MetricName=metric_name,
Dimensions=[
{
'Name': 'InstanceId',
'Value': instance_id
},
],
StartTime=start_time,
EndTime=end_time,
Period=60,
Statistics=[
'Average',
],
)
# 如果出现MaxQueryTimeRangeExceed错误,将时间范围缩小并重试
if 'MaxQueryTimeRangeExceeded' in response['ResponseMetadata']['HTTPHeaders']['x-amzn-errortype']:
start_time = end_time - timedelta(minutes=30)
response = cloudwatch.get_metric_statistics(
Namespace=namespace,
MetricName=metric_name,
Dimensions=[
{
'Name': 'InstanceId',
'Value': instance_id
},
],
StartTime=start_time,
EndTime=end_time,
Period=60,
Statistics=[
'Average',
],
)
print(response)
在上面的示例代码中,如果查询指定时间范围内的数据时出现MaxQueryTimeRangeExceed错误
上一篇:aws-sdk版本3导致Lambda抛出错误的原因是什么?
下一篇:AWS-SDK导致ReactViteWeb应用程序中出现构建错误“UncaughtTypeError:eisnotaconstructor”。