Как я могу получить идентификатор хост-зоны AWS ELB в Ruby? - PullRequest
2 голосов
/ 02 декабря 2011

Я пишу некоторый код Ruby для автоматического обновления DNS-зон Route53 (доменов) с помощью функции записи виртуального A Zone apex.Однако для настройки таких записей в дополнение к полному доменному имени требуется идентификатор хост-зоны Elastic Load-балансировщик.

Кто-нибудь знает лучший способ сделать это?(т. е. какие-нибудь самоцветы и т. д., которые могут это сделать?) В настоящее время я использую самоцвет appoxy aws в сочетании с самоцветом pc53liss route53

Спасибо.

Ответы [ 2 ]

2 голосов
/ 26 марта 2015

В современном модуле ELB AWS Ruby SDK я предложил следующее решение (частично псевдокод):

credentials_data = # something
config = AWS.config(credentials_data)

elb_name = 'your.elb.dns.name.elb.amazonaws.com.'
elb_client = config.elb_client
response = elb_client.describe_load_balancers()
elbs = response[:load_balancer_descriptions]
the_elb = elbs.select {|elb| elb[:dns_name] == elb_name}.first
the_hosted_id = the_elb[:canonical_hosted_zone_name_id]

Затем, когда вы будете работать с Route53, вы можете добавить эти данные как:

# ...
:alias_target => {
  :dns_name => elb_name,
  :hosted_zone_id => the_hosted_id,
  :evaluate_target_health => true, # or false, if you wish
},
# ...

Признаюсь, мне бы хотелось, чтобы был хороший "ruby-ish" (более идиоматичный) интерфейс для всего этого (или, возможно, есть, и мне просто нужно найти его), но вышеприведенное сработало для я использую запас aws-sdk драгоценный камень. Надеюсь, это поможет кому-то в какой-то момент.

0 голосов
/ 02 декабря 2011

Код Aws gem Aws::Elb использует AWS ELB API версии 2009-05-15.С тех пор Amazon обновил несколько версий API, последним из которых является 2011-11-15.

Формат ответа DescribeLoadBalaners был изменен между версией 2009-05-15 и версией 2009-11-25, что нарушает текущий код Aws::Elb (Listeners был изменен на ListenerDescriptions).Кроме того, элементы размещенной зоны в ответе не добавлялись до версии 2011-04-05.

Можно получить информацию о размещенной зоне, взломав источник Aws::Elb, чтобы использовать последний API и извлечьсоответствующие данные.

Теперь нам просто нужно, чтобы сопровождающие Aws обновили официальный гем.

...