0

我正在尝试使用 Ruby SDK 在 CodePipeline 部署期间暂停 ASG 进程。我可以获得 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 是“类型”而不是对象),但我不知道如何将其变成对象。我知道我错过了一些愚蠢的东西,但我只是不知道它是什么。

4

1 回答 1

0

我想出了答案:使用资源接口而不是尝试使用客户端。

显然,每个 AWS 资源都有一个 Client 对象以及 SDK 中的一个 Resource 接口。资源接口是面向对象的类,代表 AWS 中的实际资源。它们构建在 API 客户端之上并提供附加功能。

所以,这就是我的代码现在的样子:

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

它更简单明了,也更容易阅读。

于 2019-05-11T11:09:41.867 回答