首页 文章

如何找出我超出AWS EC2请求限制的原因?

提问于
浏览
2

我有一个AWS应用程序启动并终止来自几个不同AMI的许多EC2实例 .

我开始得到这个错误,通过ruby api,超出了请求限制 . 对于我认为的大多数帐户,限制大约是每小时2,000 . 但在查看我知道要查看的所有日志后,我可以在这个高点附近的任何地方 .

有没有办法从亚马逊获得我正在制作的EC2 API查询?

有没有其他技巧或好方法来确定我的过度使用,或导致错误的原因是什么?

1 回答

  • 2

    您可以通过AWS.config为aws-sdk gem启用日志记录 . 只需传入一个ruby Logger的实例 .

    require 'logger'
    AWS.config(:logger => Logger.new($stdout))
    

    您可能遇到运行n 1个查询以从EC2资源获取属性的情况 . 这是一个例子:

    ec2 = AWS::EC2.new
    ec2.instances.each do |i|
      puts i.status
    end
    

    执行1个请求以获取每个实例的ID,然后每个实例执行1个请求以获取其状态 . 您可以通过在memoize块中运行代码来改进这一点:

    AWS.memoize do
      ec2.instances.each do |i|
        puts i.status
      end
    end
    

    您还可以使用AWS.start_memoizing(和AWS.stop_memoizing)来包围更大的代码区域 . 我强烈建议阅读这篇关于集合如何在aws-sdk中工作的博客文章:http://aws.typepad.com/aws/2012/01/how-collections-work-in-the-aws-sdk-for-ruby.html

相关问题