我正在使用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,而只过滤没有任何标签的资源?
要做某事内部 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