Как я могу узнать, почему я превышаю лимит запросов AWS EC2? - PullRequest
2 голосов
/ 23 февраля 2012

У меня есть приложение AWS, которое запускается и завершает работу многих экземпляров EC2 из нескольких разных AMI.

Я начинаю получать эту ошибку, через ruby ​​api, Превышен лимит запросов .Я считаю, что для большинства учетных записей предел составляет около 2000 в час.Но я не могу найти никаких доказательств того, что мы используем это где-то близко к этому максимуму, после просмотра всех известных мне журналов, чтобы проверить.

Есть ли способ получить отчет от Amazon о том, какие запросы EC2 API яя делаю?

Есть ли какие-то другие хитрости или хорошие способы прибить мое чрезмерное использование, или что вызывает ошибку?

1 Ответ

2 голосов
/ 23 февраля 2012

Вы можете включить ведение журнала для драгоценного камня aws-sdk через AWS.config. Просто передайте экземпляр рубинового логгера.

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 запрос выполняется для получения идентификаторов каждого экземпляра, а затем выполняется 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...