Получить значения из JSON в Ruby - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь подключить VolumeId и состояние тома к компьютерам с помощью API aws.

код

#!/usr/local/bin/ruby
require "aws-sdk"
require "rubygems"


list=Aws::EC2::Client.new(region: "us-east-1")
volume=list.describe_volumes()
volumes=%x( aws ec2 describe-volumes --region='us-east-1' )
puts volumes

Ниже приведен пример вывода команды aws ec2 describe-volumes --region='us-east-1'. Помогите пожалуйста получить VolumeID и указать состояние ниже

Пример вывода API (JSON):

{
"Volumes": [
    {
        "AvailabilityZone": "us-east-1d", 
        "Attachments": [
            {
                "AttachTime": "2015-02-02T07:31:36.000Z", 
                "InstanceId": "i-bca66353", 
                "VolumeId": "vol-892a2acd", 
                "State": "attached", 
                "DeleteOnTermination": true, 
                "Device": "/dev/sda1"
            }
        ], 
        "Encrypted": false, 
        "VolumeType": "gp2", 
        "VolumeId": "vol-892a2acd", 
        "State": "in-use", 
        "Iops": 100, 
        "SnapshotId": "snap-df910966", 
        "CreateTime": "2015-02-02T07:31:36.380Z", 
        "Size": 8
    }, 
 ]
}

1 Ответ

0 голосов
/ 18 сентября 2018

для получения только volume_ids ->

JSON.parse(volumes)['Volumes'].map{|v|v["VolumeId"]}

для получения states ->

JSON.parse(volumes)['Volumes'].map{|v|v["state"]}

для получения хеша / карты с идентификаторами объема какключи и их состояния как значения ->

JSON.parse(volumes)['Volumes'].map{|v| [v["VolumeId"],v["state"]] }.to_h
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...