Ant*_*ony 7 amazon-sqs amazon-web-services aws-sdk
如何通过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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
707 次 |
| 最近记录: |