저는 셰프 전문가는 아닙니다. AWS에 네트워크 인프라를 배포하려고 합니다. 칼을 사용하여 Chef 서버에 업로드한 요리책을 실행할 때 인프라를 구성하기 위해 AWS에 많은 API 요청이 이루어졌습니다. 분명히 짧은 시간 내에 AWS가 요청을 차단하고 결국 이 실패가 발생했습니다.
ubuntu@ip-172-66-250-88:~/chef$ knife deployment resize -E core_1 -V
[...]
INFO: Creating security groups...
INFO: Adding rule {:ip_protocol=>:tcp, :min=>7000, :max=>7000, :group=>"sg-04463cd014cc1562c"} to mme-pgw
INFO: Adding rule {:ip_protocol=>:tcp, :min=>9160, :max=>9160, :group=>"sg-04463cd014cc1562c"} to mme-enb
[...]
ERROR: Fog::Compute::AWS::Error: RequestLimitExceeded => Request limit exceeded.
나는 연구했다(https://github.com/chef/knife-ec2/issues/453), 잠재적인 해결책은 단순히 후속 요청 속도를 늦추는 것입니다. 예를 들어 Ruby 스크립트에 SLEEP을 넣어 요청 사이에 몇 초 동안 일시 중지하는 것입니다. 이해하고 쉽고 훌륭합니다.
sleep 3
...그리고 그것을 어디에 두어야 할지 모르겠습니다.
해당 코드를 어디에, 어떤 파일이나 함수 안에 배치해야 하는지 아는 사람이 있나요?
"ec2_server_create_spec.rb"나 다른 곳에 있을까요? 내부에는 어떤 기능이 있나요?
나중에 스크립트를 "컴파일"해야 합니까?
나는 내 입장에서 합리적이라고 생각되는 모든 것을 시도했지만 실패했습니다. 무엇을 수정해야 할지에 대한 제안이 있으십니까?
답변1
마침내 요청 속도를 늦추기 위해 SLEEP을 배치할 수 있는 파일과 스크립트를 찾았습니다. 효과가 있었습니다.
이는 내 배포 스크립트에만 국한된 것이므로 모든 경우가 다르기 때문에 정확히 어디인지 공유할 수 없습니다.