Теги AWS для группы ресурсов возвращают полезную информацию из слоев массивов и хэшей - PullRequest
0 голосов
/ 27 сентября 2019

Использование AWS ResourceGroupsTaggingAPI Я пытаюсь отфильтровать возвращенный список массивов или структур, массивов и т. Д., Например.

мой код

client = Aws::ResourceGroupsTaggingAPI::Client.new(credentials: profile, region: region)

    pagination = nil

    loop do
    response = client.get_resources({ etc etc

Я передаю три тега и получаю список ресурсов обратно ОК, но я не хочу всю информацию, я хочу отфильтровать список, чтобы яможет иметь только «Имена» или только арнс, вывод одного элемента ниже.

  resource_arn=
   "arn:aws:ec2:eu-west-2:blahblah:instance/i-blahblah",
  tags=
   [#<struct Aws::ResourceGroupsTaggingAPI::Types::Tag
     key="Name",
     value="VTX-EU : Non-Prod : QA1 : CoreStack">,
    #<struct Aws::ResourceGroupsTaggingAPI::Types::Tag
     key="Qualys-CloudAgent",
     value="VTX-EU : Non-Prod : QA1">,
    #<struct Aws::ResourceGroupsTaggingAPI::Types::Tag
     key="app",
     value="corestack">,
    #<struct Aws::ResourceGroupsTaggingAPI::Types::Tag key="env", value="qa">,
    #<struct Aws::ResourceGroupsTaggingAPI::Types::Tag key="group", value="1">,
    #<struct Aws::ResourceGroupsTaggingAPI::Types::Tag
     key="os",
     value="windows">]>]

И так как я не очень хорош в Ruby, я не знаю, как отфильтровать вывод, чтобы показать только Имя, поэтому я выводил список имен экземпляров или любой другой тег, а затем либо выводилданные, или использовать его в другом вызове другого API.

Может ли кто-нибудь помочь с логикой, потому что мне, кажется, не хватает способности выяснить, как получить нужную информацию.

в aws метод является response.resourceresource_tag_mapping_list, мне кажется, является комбинацией циклов select и вложенных, возможно, ссылающихся на конкретные элементы в массиве / s.

Большое спасибо

ОБНОВЛЕНИЕ: ТАК, это куча массивов и структур, (извините, я знаю, что это говорит об этом в выводе), если я делаю

response.resource_tag_mapping_list[0][:tags][0][:value]

Я получаю

"VTX-EU : Non-Prod : QA1 : CoreStack"

, однако делая это

response.resource_tag_mapping_list.each { |e| puts e[:tags][0][:value]}

Получает почти то же самое, что я написал выше.

спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...