我有一个AWS应用程序启动并终止来自几个不同AMI的许多EC2实例 .
我开始得到这个错误,通过ruby api,超出了请求限制 . 对于我认为的大多数帐户,限制大约是每小时2,000 . 但在查看我知道要查看的所有日志后,我可以在这个高点附近的任何地方 .
有没有办法从亚马逊获得我正在制作的EC2 API查询?
有没有其他技巧或好方法来确定我的过度使用,或导致错误的原因是什么?
您可以通过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
1 回答
您可以通过AWS.config为aws-sdk gem启用日志记录 . 只需传入一个ruby Logger的实例 .
您可能遇到运行n 1个查询以从EC2资源获取属性的情况 . 这是一个例子:
执行1个请求以获取每个实例的ID,然后每个实例执行1个请求以获取其状态 . 您可以通过在memoize块中运行代码来改进这一点:
您还可以使用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