Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在ListMetrics函数中使用nextToken_C#_Amazon Web Services_Cloud_Amazon Cloudwatch_Cloudwatch - Fatal编程技术网

C# 如何在ListMetrics函数中使用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

我试图使用函数ListMetrics列出CloudWatch中存储的所有度量。 该函数返回大约500个度量和一个名为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获取其余的度量

  // 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页,您也可能会遇到限制问题。