Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

293
Visualizações
Ruby print or return specific field from object

How do I print the group_id from the returned object?

The following is returned from a function. I want to print the group_id or maybe return the group_id

 {
  :security_groups=>[
    {
      :description=>"Created By ManageIQ",
      :group_name=>"MIQ_019",
      :ip_permissions=>[
        {
          :from_port=>22,
          :ip_protocol=>"tcp",
          :ip_ranges=>[
            {
              :cidr_ip=>"0.0.0.0/0",
              :description=>nil
            }
          ],
          :ipv_6_ranges=>[],
          :prefix_list_ids=>[],
          :to_port=>22,
          :user_id_group_pairs=>[]
        }
      ],
      :owner_id=>"943755119718",
      :group_id=>"sg-0c2c5f219f1bafc1a",
      :ip_permissions_egress=>[
        {
          :from_port=>nil,
          :ip_protocol=>"-1",
          :ip_ranges=>[
            {
              :cidr_ip=>"0.0.0.0/0",
              :description=>nil
            }
          ],
          :ipv_6_ranges=>[],
          :prefix_list_ids=>[],
          :to_port=>nil,
          :user_id_group_pairs=>[]
        }
      ],
      :tags=>[],
      :vpc_id=>"vpc-d817c1b3"
    }
  ],
  :next_token=>nil
}

This is the function: I want to return security_group.group_id

def describe_security_group (
  group_name
 )  
  ec2 = get_aws_client
  security_group = ec2.describe_security_groups(
    filters: [
      {name: 'group-name', values: [ group_name ]}]
    )
  puts "Describing security group '#{group_name}' with ID " \
    "'#{security_group}'"
  return security_group
rescue StandardError => e
  puts "Error describing security group: #{e.message}"  
  return 
end
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

So, returning value seems like a hash, or you can make it hash exactly.

For case with one-element array you can simple use ruby dig method.

And according to your datum and comment below we can access needed element like this:

# from your ec2 api call
security_group  = ec2.describe_security_groups(...)

# Result value is stored in `security_group` variable,
# and looks exactly like hash below
{
  :security_groups=>[
    {
      :description=>"Created By ManageIQ",
      :group_name=>"MIQ_019",
      :ip_permissions=>[
        {
          :from_port=>22,
          :ip_protocol=>"tcp",
          :ip_ranges=>[
            {
              :cidr_ip=>"0.0.0.0/0",
              :description=>nil
            }
          ],
          :ipv_6_ranges=>[],
          :prefix_list_ids=>[],
          :to_port=>22,
          :user_id_group_pairs=>[]
        }
      ],
      :owner_id=>"943755119718",
      :group_id=>"sg-0c2c5f219f1bafc1a",
      :ip_permissions_egress=>[
        {
          :from_port=>nil,
          :ip_protocol=>"-1",
          :ip_ranges=>[
            {
              :cidr_ip=>"0.0.0.0/0",
              :description=>nil
            }
          ],
          :ipv_6_ranges=>[],
          :prefix_list_ids=>[],
          :to_port=>nil,
          :user_id_group_pairs=>[]
        }
      ],
      :tags=>[],
      :vpc_id=>"vpc-d817c1b3"
    }
  ],
  :next_token=>nil
}

# And this is a target value, that you can store in another one,
# return from method or simply print to output
security_group.dig(:security_groups)
              .try(:[], 0)
              .dig(:group_id)

=> "sg-0c2c5f219f1bafc1a"

But if you need to search in array with multiple elements, methods from Ruby's Enumerable module could be helpful (like select or reject).

UPDATE with OpenStruct, if you prefer such method calls with dot notation:

json = security_group.to_json

os = JSON.parse(json, object_class: OpenStruct)

os.security_groups.first.group_id
=> "sg-0c2c5f219f1bafc1a"
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda