1

我正在尝试使用 ruby​​ 的 aws-sdk 为我的实例检索亚马逊生成的事件。这将派上用场,因为我正在监视我的实例并在发现事件时发出警报。

我找到了一篇允许使用 python 的 boto 库的文章,但我目前只能使用 ruby​​。

这些事件可以在 EC2 仪表板 -> 事件下找到。

当前事件表明实例正在降级的硬件上运行并将停用。事件类型是“实例停止”。

有没有办法使用 ruby​​ 的 aws-sdk 以编程方式获取这些事件?

4

1 回答 1

2

我在浏览亚马逊网站上的 ruby​​ sdk 文档并查看某人的 python 代码时发现了这一点。他们正在打这个电话:

Python 的 boto 库:

stats = ec2.get_all_instance_status()

在 ruby​​ 和来自 ec2 对象中,不存在像这种精确调用这样的方法。我在此博客(http://ruby.awsblog.com/)上进一步阅读,它显示了示例,但与我想要的没有什么相似之处。

当我注意到有一个客户端对象并且它确实包含“describe_instance_status”时,我正在 IRB 中摸索,这与 python 的 get_all_instance_status 相似,如果不一样的话。

然后我能够找到这个链接:

http://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html

这个 Client 对象基本上是可以访问所有 api 调用的底层查询对象。现在这是一项简单的任务,因为文档描述了我们可以通过将选项 {} 传递给 describe_instance_status 方法来查询和过滤这些结果:

>> ec2 = AWS::EC2::new(:aws_key_id => ENV['AWS_ACCESS_KEY_ID'], :aws_secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'])
>> status = ec2.client.describe_instance_status({ "instance_ids" => ["i-xxxxxxx"] });
>> status
-> {:instance_status_set=>[{:events_set=>[{:code=>"instance-stop", :description=>"The instance is running on degraded hardware", :not_before=>2013-06-25 00:00:00 UTC}], :instance_id=>"i-xxxxxxxx",...

希望这可以帮助其他寻求做类似事情的人。

于 2013-06-17T16:33:12.307 回答