【问题标题】:Fetch amazon events from ruby's aws-sdk从 ruby​​ 的 aws-sdk 获取亚马逊事件
【发布时间】:2013-06-17 15:11:44
【问题描述】:

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

我发现一篇文章允许使用 python 的 boto 库进行此操作,但我目前只能使用 ruby​​。

这些事件可以在 EC2 Dashboard -> Events 下找到。

显示实例在降级硬件上运行并将停用的当前事件。事件类型为“instance-stop”。

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

【问题讨论】:

    标签: ruby amazon-ec2 amazon


    【解决方案1】:

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

    Python 的 boto 库:

    stats = ec2.get_all_instance_status()
    

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

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

    然后我找到了这个链接:

    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",...
    

    希望这有助于其他寻求做类似事情的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-08
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2017-07-10
      • 1970-01-01
      • 2021-09-29
      相关资源
      最近更新 更多