Используя Ruby SDK, как мне получить дескриптор существующей AutoScalingGroup? - PullRequest
0 голосов
/ 11 мая 2019

Я пытаюсь приостановить процессы ASG во время развертывания CodePipeline с использованием Ruby SDK. Я могу получить клиент AutoScaling, но не могу преобразовать эту группу в объект.

client = Aws::AutoScaling::Client.new
asg = client.describe_auto_scaling_groups({auto_scaling_group_names:['MyASG']})[:auto_scaling_groups].first

asg.suspend_processes({scaling_processes:['AZRebalance','AlarmNotification']})

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

undefined method `restore_processes' for #<Aws::AutoScaling::Types::AutoScalingGroup:0x00007fa3e18f8b30>

Я понимаю, почему я получаю ошибку (asg - это «Тип», а не объект), но я не знаю, как превратить ее в объект. Я знаю, что упускаю что-то глупое, но я просто не знаю, что это такое.

1 Ответ

0 голосов
/ 11 мая 2019

Я понял ответ: используйте Resource Interface вместо того, чтобы пытаться использовать Client.

Очевидно, что каждый ресурс AWS имеет объект Client, а также интерфейс Resource в SDK. Ресурсные интерфейсы - это объектно-ориентированные классы, которые представляют реальные ресурсы в AWS. Они построены на основе клиентов API и предоставляют дополнительную функциональность.

Итак, вот как выглядит мой код:

asg   = Aws::AutoScaling::Resource.new
group = asg.group('MyASG')
group.suspend_processes({scaling_processes:['AZRebalance','AlarmNotification']})

Он более простой и понятный, а также его легче читать.

...