C# 如何在ListMetrics函数中使用nextToken
我试图使用函数ListMetrics列出CloudWatch中存储的所有度量。 该函数返回大约500个度量和一个名为NextToken的字符串值,该值将在下一次调用中用于获取其余度量C# 如何在ListMetrics函数中使用nextToken,c#,amazon-web-services,cloud,amazon-cloudwatch,cloudwatch,C#,Amazon Web Services,Cloud,Amazon Cloudwatch,Cloudwatch,我试图使用函数ListMetrics列出CloudWatch中存储的所有度量。 该函数返回大约500个度量和一个名为NextToken的字符串值,该值将在下一次调用中用于获取其余度量 // creates the CloudWatch client var cw = Amazon.AWSClientFactory.CreateAmazonCloudWatchClient(Amazon.RegionEndpoint.EUWest1); // initia
// creates the CloudWatch client
var cw = Amazon.AWSClientFactory.CreateAmazonCloudWatchClient(Amazon.RegionEndpoint.EUWest1);
// initialses the list metrics request
ListMetricsRequest lmr = new ListMetricsRequest();
ListMetricsResponse lmresponse = cw.ListMetrics(lmr);
// loop that uses the token to get all the metrics available
// not finished yet
do
{
lmresponse = cw.ListMetrics(lmr);
lmresponse.NextToken;
} while (lmresponse.NextToken != null);
下面是我的代码,但我不知道如何使用NextToken获取其余的度量
// creates the CloudWatch client
var cw = Amazon.AWSClientFactory.CreateAmazonCloudWatchClient(Amazon.RegionEndpoint.EUWest1);
// initialses the list metrics request
ListMetricsRequest lmr = new ListMetricsRequest();
ListMetricsResponse lmresponse = cw.ListMetrics(lmr);
// loop that uses the token to get all the metrics available
// not finished yet
do
{
lmresponse = cw.ListMetrics(lmr);
lmresponse.NextToken;
} while (lmresponse.NextToken != null);
我想知道如何使用NextToken来获取其余指标。很遗憾,我在网上找不到任何例子 如果您只需要循环整个度量列表,我将使用
foreach
循环。代码如下所示:
// creates the CloudWatch client
var cw = Amazon.AWSClientFactory.CreateAmazonCloudWatchClient(Amazon.RegionEndpoint.EUWest1);
// initialses the list metrics request
ListMetricsRequest lmr = new ListMetricsRequest();
ListMetricsResponse lmresponse = cw.ListMetrics(lmr);
foreach (Metric metric in lmresponse.Metrics)
{
// do something with
// metric.MetricName;
// metric.Dimensions;
// etc
}
如果响应中有NextToken,您可以在下一个请求中使用它:
// creates the CloudWatch client
var cw = Amazon.AWSClientFactory.CreateAmazonCloudWatchClient(Amazon.RegionEndpoint.EUWest1);
// initialses the list metrics request
ListMetricsRequest lmr = new ListMetricsRequest();
ListMetricsResponse lmresponse = cw.ListMetrics(lmr);
while (lmresponse.NextToken != null);
{
// set request token
lmr.NextToken = lmresponse.NextToken;
lmresponse = cw.ListMetrics(lmr);
// Process metrics found in lmresponse.Metrics
}
将其置于do while循环中可确保ListMetrics函数不断被调用,并列出所有指标,只要nextToken不为null
private string nextToken;
do
{
lmrequest.NextToken = nextToken;
lmresponse = cloudwatch.ListMetrics(lmrequest);
nextToken = lmresponse.NextToken;
} while (nextToken != null);
感谢你的帮助,但这并不是我真正想要的。我需要的帮助是如何使用nextToken值获取剩余的度量值。注意,如果按字面理解,这将跳过处理第一页。您还必须在while循环之前进行处理,因此可能在这两个位置都有注释或函数调用ProcessMetrics(lmresponse)@BigMan的回复将确保所有内容都得到处理,并且更加简洁,但是如果超过30页,您也可能会遇到限制问题。