How to enumerate all SQS queues in an AWS account

房东的猫 提交于 2019-11-30 20:25:34

You can retrieve SQS queue names from Cloudwatch, which supports paging. It will only return queues that are considered active.

An active queue is described as:

A queue is considered active by CloudWatch for up to six hours from the last activity (for example, any API call) on the queue.

Something like this should work:

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);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!