Como resolver "Fog::Compute::AWS::Error: RequestLimitExceeded => Limite de solicitação excedido." ao executar um livro de receitas do Chef

Como resolver "Fog::Compute::AWS::Error: RequestLimitExceeded => Limite de solicitação excedido." ao executar um livro de receitas do Chef

Não sou especialista em Chef. Estou tentando implantar uma infraestrutura de rede na AWS. Quando executo o livro de receitas que carreguei no Chef Server usando o Knife, muitas solicitações de API são feitas à AWS para configurar a infraestrutura, aparentemente tantas em um intervalo de tempo tão curto que a AWS bloqueia as solicitações e essa falha acontece eventualmente:

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.

Eu pesquisei (https://github.com/chef/knife-ec2/issues/453), e entendo que uma solução potencial é simplesmente diminuir a taxa de solicitações feitas posteriormente, por exemplo, colocar um SLEEP no script Ruby para pausar por alguns segundos entre as solicitações. Entendido, fácil, incrível:

sleep 3

...E não tenho ideia de onde colocar isso.

Alguém sabe onde eu teria que colocar esse código, dentro de qual arquivo ou função?

Talvez em "ec2_server_create_spec.rb" ou em outro lugar? Dentro de qual função?

Preciso "compilar" o script depois?

Tentei tudo que considero razoável da minha parte, falhei. Alguma sugestão sobre o que modificar?

Responder1

Finalmente encontrei o arquivo e o script onde o SLEEP poderia ser colocado para diminuir a velocidade das solicitações. Funcionou.

Era específico para meus scripts de implantação, portanto não posso compartilhar exatamente onde, pois cada caso é diferente.

informação relacionada