2012-02-23 4 views
2

몇 가지 다른 AMI에서 시작하여 많은 EC2 인스턴스를 종료하는 AWS 앱이 있습니다.AWS EC2 요청 제한을 초과하는 이유를 어떻게 알 수 있습니까?

ruby ​​api를 통해이 오류가 발생하기 시작했습니다. 요청 제한이을 초과했습니다. 내가 믿는 대부분의 계정에 대해 한도는 약 2,000입니다. 그러나 나는 내가 알고있는 모든 로그를 조사한 후에이 최고점 근처에있는 사용법에 대한 어떠한 증거도 찾을 수 없습니다.

Amazon에서 EC2 API 쿼리를 작성하는 방법이 있습니까?

과도한 사용을 저지하기위한 다른 방법이나 좋은 방법이 있습니까? 아니면 오류의 원인은 무엇입니까?

+1

많은 인스턴스 시작/중지입니다. 인스턴스 종료는 본질적으로 XEN VM을 '파괴'한다는 것을 기억하십시오. 내 제안은 실행중인 인스턴스를 사용하여 어떻게 톤을 줄이는지를 파악하는 것입니다. – EdH

+2

나는 그들이 모두 시작과 정지라고 의심한다. 나는 그들이 전화를한다고 생각한다. 로거를 사용하면 호출 내용을 식별하는 데 도움이됩니다. –

답변

2

AWS.config를 통해 aws-sdk gem에 대한 로깅을 활성화 할 수 있습니다. 루비 로거의 인스턴스를 전달하십시오.

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

것은 당신은 가능성이 당신의 EC2 자원의 속성을 가져 오기 위해 N + 1 개 쿼리를 실행하는 상황으로 실행하고 있습니다. 다음은 그 예이다 :

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

1 요청은 각 인스턴스의 ID를 가져 수행 한 후 요청 상태를 얻을 인스턴스마다 수행된다. 당신은 memoize 블록 내부 코드를 실행하여이 문제를 개선 할 수 있습니다 : 당신은 또한 코드의 큰 영역을 둘러싸고 AWS.start_memoizing (및 AWS.stop_memoizing)를 사용할 수 있습니다

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

. 나는 aws-sdk에서 컬렉션이 어떻게 작동하는지에 대한이 블로그 기사를 강력하게 제안합니다. http://aws.typepad.com/aws/2012/01/how-collections-work-in-the-aws-sdk-for-ruby.html

+0

예, 우리는 이미 이것을하고 있습니다. – Dogweather

관련 문제