Desidero evitare gli errori “Rate exceeded” quando utilizzo AWS CloudFormation.
Breve descrizione
Le chiamate API a un servizio AWS che superano il numero massimo di richieste API consentito generano l'errore Rate exceeded. In questo caso, le chiamate API vengono limitate.
Soluzione
Un servizio AWS a valle supera la frequenza massima consentita
Per evitare che un servizio AWS superi la frequenza massima consentita durante il funzionamento dello stack CloudFormation, utilizza le seguenti opzioni.
Usa l'attributo DependsOn
A meno che non venga definita una dipendenza tra le risorse, CloudFormation crea e aggiorna le risorse contemporaneamente. L'attributo DependsOn definisce le dipendenze tra le risorse per controllare gli aggiornamenti simultanei.
Per specificare quando ogni risorsa dipendente viene creata o aggiornata, utilizza l'attributo DependsOn. Ad esempio, se la risorsa B dipende dalla risorsa A, è possibile specificare che la risorsa A dovrà essere creata o aggiornata prima della risorsa B. In questo modo, si limita il numero di chiamate API contemporanee e si riduce l’eventualità di limitazioni. È anche possibile utilizzare l'attributo DependsON con stack annidati.
Richiedi un aumento della quota
Se l'attributo DependsON non risolve l'errore Rate exceeded, è possibile richiedere un aumento della quota. Prima di richiedere un aumento della quota per l'API a valle, identifica innanzitutto la chiamata API per determinare quella che supera la frequenza di chiamata.
Nella richiesta di aumento della quota, includi la tua regione AWS, l'intervallo di tempo della limitazione delle API e il motivo dell'aumento.
Un'API AWS CloudFormation supera la frequenza massima consentita
Per evitare che le chiamate all'API CloudFormation superino il numero massimo di richieste API consentite, utilizza le seguenti opzioni.
Implementa il backoff esponenziale
Quando usi gli endpoint delle API AWS, implementa il backoff per ridurre il numero di chiamate API.
Lo pseudocodice di esempio seguente di una chiamata API DescribeStacks è configurato per riprovare la chiamata API dopo un intervallo di tempo specifico:
{
Make 'DescribeStacks' API call
if throttled: wait 2 sec; Make 'DescribeStacks' API call
if throttled: wait 4 sec; Make 'DescribeStacks'API call
if throttled: wait 8 sec; Make 'DescribeStacks' API call
if throttled: wait 16 sec; Make 'DescribeStacks' API call
if throttled: wait 32 sec; Make 'DescribeStacks' API call
}
Crea o aggiorna gli stack uno alla volta
Più stack CloudFormation creati o aggiornati contemporaneamente possono causare troppe chiamate API. Per evitare che le chiamate API superino il numero massimo di richieste API consentito, crea o aggiorna uno stack alla volta.
Richiedi un aumento della quota
Se non riesci a creare o aggiornare gli stack, puoi richiedere un aumento della quota per l'API CloudFormation. Prima di richiedere un aumento della quota, identifica innanzitutto la chiamata API per determinare quella che supera la frequenza di chiamata.
Nella richiesta di aumento della quota, includi la tua regione AWS, l'intervallo di tempo della limitazione delle API e il motivo dell'aumento.