Ruby Aws :: Route53 :: Client过滤器用于没有标签的对象

问题描述 投票:0回答:1

我正在使用two functions使用ruby Aws :: Route53 :: Client收集未标记的运行状况检查,然后对其进行标记。现在,我正在收集所有运行状况检查,然后过滤掉没有标签的检查。是否可以使用过滤器直接收集所有不带标签的健康检查?

这里是我目前执行此操作的代码的片段:

...
    # lookup checks, list_tags_for_resources has a max search of 10 items
    checks_search = client.list_health_checks(marker: marker, max_items: 10)
    ids = checks_search.to_h[:health_checks].map {|check| check[:id]}
    list_check_tags = client.list_tags_for_resources({
      resource_type: "healthcheck", 
      resource_ids: ids, 
    }).to_h

    untagged = list_check_tags[:resource_tag_sets].select{|check| check[:tags].empty?}.map {|check| check[:resource_id]}
...

至少有一种方法可以运行list_tags_for_resources,而只过滤没有任何标签的资源?

ruby amazon-web-services aws-sdk amazon-route53
1个回答
0
投票

要做某事内部 list_tags_for_resources方法以使其返回过滤后的列表,您必须猴子修补该方法。您可以执行以下操作(未经测试,可能不正确,但显示了原理):

module Aws::Route53
  class Client < Seahorse::Client::Base
    def list_tags_for_resource(params = {}, options = {})
      req = build_request(:list_tags_for_resource, params)
      req.send_request(options).select{|check| check[:tags].empty?}.map {|check| check[:resource_id]}
    end
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.