簡體   English   中英

如何枚舉AWS賬戶中的所有SQS隊列

[英]How to enumerate all SQS queues in an AWS account

如何通過API和.Net SDK以編程方式列出AWS賬戶中的所有SQS隊列?

我已經在使用DynamoDb表做類似的事情了,這非常簡單-您可以循環使用ListTables翻頁結果,直到獲得所有結果為止。

但是,等效的SQS Api端點ListQueues是不同的,沒有那么有用。 它最多返回1000個隊列,沒有分頁選項。

是的,我的情況下可能有1000多個隊列。 我有一個查詢返回正好1000個結果。 全部在1個區域中,因此與這個問題不同

您可以從支持分頁的Cloudwatch中檢索SQS隊列名稱。 它只會返回被認為是活動的隊列。

活動隊列描述為

從隊列的上一個活動(例如,任何API調用)起,CloudWatch認為該隊列處於活動狀態的時間長達六個小時。

這樣的事情應該起作用:

var client = new AmazonCloudWatchClient(RegionEndpoint.EUWest1);
string nextToken = null;
var results = Enumerable.Empty<string>();

do
{
    var result = client.ListMetrics(new ListMetricsRequest()
    {
        MetricName = "ApproximateAgeOfOldestMessage",
        NextToken = nextToken
    });

    results = results.Concat(
        result
        .Metrics
        .SelectMany(x => x.Dimensions.Where(d => d.Name == "QueueName")
        .Select(d => d.Value))
    );

    nextToken = result.NextToken;

} while (nextToken != null);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM