1

我正在尝试使用以下函数列出存储在 CloudWatch 中的所有指标:ListMetrics。该函数返回大约 500 个指标和一个名为 NextToken 的字符串值,该值将在下一次调用中用于获取其余指标。

这是我下面的代码,但我不知道如何使用 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 来获取其余的指标。不幸的是,我在网上找不到任何示例。

4

3 回答 3

1

如果响应中有 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
} 
于 2014-08-11T22:24:25.587 回答
1

将其放入 do-while 循环可确保 ListMetrics 函数不断被调用并列出所有指标,只要 nextToken 不为空。

private string nextToken;

do
{
  lmrequest.NextToken = nextToken;
  lmresponse = cloudwatch.ListMetrics(lmrequest);
  nextToken = lmresponse.NextToken;
} while (nextToken != null);
于 2014-08-13T12:52:24.123 回答
0

如果您只需要遍历整个指标列表,我会使用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
        }
于 2014-07-24T14:10:46.420 回答