Amazon ec2 AWS:从AmazonCloudWatch.GetMetricStatistics()获取400个错误请求

Amazon ec2 AWS:从AmazonCloudWatch.GetMetricStatistics()获取400个错误请求,amazon-ec2,amazon-web-services,metrics,amazon-cloudwatch,Amazon Ec2,Amazon Web Services,Metrics,Amazon Cloudwatch,我在使用AmazonCloudWatch获取CPU利用率时遇到了一些问题。当我尝试使用AmazonCloudWatch.GetMetricStatistics()时,我得到了一条异常消息: 引发了类型为“Amazon.CloudWatch.AmazonCloudWatchException”的异常 对于内部异常: {“远程服务器返回了一个错误:(400)请求错误。”} 下面是我用来打电话的代码: 公共静态字符串getCPUStats(字符串端点,字符串实例ID) { 尝试 { AmazonClo

我在使用AmazonCloudWatch获取CPU利用率时遇到了一些问题。当我尝试使用AmazonCloudWatch.GetMetricStatistics()时,我得到了一条异常消息:

引发了类型为“Amazon.CloudWatch.AmazonCloudWatchException”的异常

对于内部异常

{“远程服务器返回了一个错误:(400)请求错误。”}

下面是我用来打电话的代码:

公共静态字符串getCPUStats(字符串端点,字符串实例ID)
{
尝试
{
AmazonCloudWatchConfig cloudConfig=新的AmazonCloudWatchConfig();
cloudConfig.ServiceURL=端点;
字符串AWSAccessKey=Sql.ToString(appConfig[“AWSAccessKey”]);
字符串AWSSecretKey=Sql.ToString(appConfig[“AWSSecretKey”]);
AmazonCloudWatch client=AWSClientFactory.CreateAmazonCloudWatchClient(AWSAccessKey、AWSSecretKey、cloudConfig);
GetMetricStatisticsRequest=新建GetMetricStatisticsRequest();
Add(新维度{Name=“InstanceId”,Value=InstanceId});
request.StartTime=DateTime.UtcNow.AddMinutes(-5);
request.EndTime=DateTime.UtcNow;
request.Namespace=“AWS/EC2”;
请求。统计。添加(“最大值”);
请求。统计。添加(“平均”);
request.MetricName=“CPUUtilization”;
请求。期间=60;
GetMetricStatisticsResponse r=client.GetMetricStatistics(请求);
如果(r.GetMetricStatisticsResult.Datapoints.Count>0)
{
Datapoint Datapoint=r.GetMetricStatisticsResult.Datapoints[0];
返回“CPU最大负载:”+数据点。最大值;
}
返回“无可用数据。”;
}
捕获(例外情况除外)
{
返回ex.消息;
}
}
一些旁注-访问密钥、秘密访问密钥和端点对于创建AmazonEC2Client来说很好,所以我很确定问题不存在


我已经在谷歌上搜索了很多文档,但没有成功地解决这个问题。有什么想法吗?非常感谢

我认为您一次只能请求一个统计数据。因此,请尝试删除
request.Statistics.Add(“最大值”)
请求.统计.添加(“平均”)

我认为您一次只能请求一个统计信息。因此,请尝试删除
request.Statistics.Add(“最大值”)
请求.统计.添加(“平均”)

不幸的是,我们无法解决这个问题-我们最终决定使用Microsoft Azure而不是Amazon Web服务:(

不幸的是,我们无法解决这个问题-我们最终决定使用Microsoft Azure而不是Amazon Web服务:(

调试挑战的一部分是“真正的”Amazon错误消息在AWSSDK中丢失,并被翻译成通用的.NET 400(又名:“BadRequest”)……我正在用一些DynamoDB代码解决同样的问题……我认为唯一的答案是启动Fiddler并查看响应……调试挑战的一部分是“真实的”Amazon错误消息在AWSSDK中丢失,并被翻译成通用的.NET 400(又名:“BadRequest”)…我正在用一些DynamoDB代码解决同样的问题…我认为唯一的答案是启动Fiddler并查看响应…我拿出了“平均”的一个,但不幸的是,我得到了相同的结果:(嗯……我对c不太熟悉,但是你能检查一下startTime格式并确认它看起来像是2012-06-02T10:00:00+08:00。如果不改成这种格式。谢谢,但我认为我做不到,因为startTime需要的是DateTime对象,而不是字符串-据我所知,DateTime对象不能有格式(它们只保存所有信息)。只有DateTime可解析字符串可以有这样的格式。(如果我在这方面有错,请告诉我)我取了“平均”一个,但不幸的是,我得到了相同的结果:(嗯……我对c不太熟悉,但是你能检查一下startTime格式并确认它看起来像是2012-06-02T10:00:00+08:00。如果不改成这种格式。谢谢,但我认为我做不到,因为startTime需要的是DateTime对象,而不是字符串-据我所知,DateTime对象不能有格式(它们只保存所有信息)。只有DateTime可解析字符串可以有这样的格式。(不过,如果我在这方面有错,请告诉我)我开始有了同样的想法。没有从论坛或电子邮件支持中得到很大的帮助。AWS希望你付费,然后我想我会得到帮助。我是一名试图测试并希望使用AWS的开发人员。我开始有同样的想法。没有从论坛或电子邮件支持中得到很大的帮助。AWS希望你付费,然后我想我会得到帮助。我是一名试图测试并希望使用AWS的开发人员。