Репликатор Ruby для данных зависания амазонки

88
7

Есть ли более эффективный способ сделать это? Под этим я имею в виду, могу ли я реорганизовать свой сценарий, чтобы получить результат более эффективно, не получая эту информацию из другого источника, т.е. Amazon через API или SDK.

Я делаю завиток, который возвращает это

{
"instanceId" : "i-123abcde",
"billingProducts" : null,
"version" : "2001-01-01",
"accountId" : "123456789012",
"instanceType" : "m1.large",
"architecture" : "x86_64",
"kernelId" : "aki-123ab1ab",
"ramdiskId" : null,
"pendingTime" : "2001-01-00T00:00:00Z",
"availabilityZone" : "us-east-1a",
"imageId" : "ami-12345ab1",
"devpayProductCodes" : null,
"privateIp" : "10.10.10.10",
"region" : "us-east-1"
}

Это мой кодовый блок

require 'rubygems'
require 'curb'
require 'pp'

info = Curl.get("http://169.254.169.254/latest/dynamic/instance-identity/document")

foo = info.body_str.split(',').join.scan(/"(.*?)" : "(.*?)"/)

quux = {}
foo.each do |baz|
quux[baz[0]] = baz[1]
end
pp quux

Результатом является хеш с ключами

{
"instanceId" => "i-123abcde",
"version" => "2001-01-01",
"accountId" => "123456789012",
"instanceType" => "m1.large",
"architecture" => "x86_64",
"kernelId" => "aki-123ab1ab",
"pendingTime" => "2001-01-00T00:00:00Z",
"availabilityZone" => "us-east-1a",
"imageId" => "ami-12345ab1",
"privateIp" => "10.10.10.10",
"region" => "us-east-1"
}

спросил(а) 2021-01-25T18:08:27+03:00 4 месяца, 2 недели назад
1
Решение
76

Это данные JSON. Сделай это:

require 'json'
...
quux = JSON.parse(info.body_str)

ответил(а) 2021-01-25T18:08:27+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема