Skip to content

Commit 6474702

Browse files
committed
Made it handle being rate limited by AWS.
1 parent 79a9511 commit 6474702

File tree

1 file changed

+54
-12
lines changed

1 file changed

+54
-12
lines changed

Monitoring/auto-add-cw-alarms/auto_add_cw_alarms.py

Lines changed: 54 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,23 @@ def getFss(fsx):
257257

258258
# The initial amount of time to sleep if there is a rate limit exception.
259259
sleep=.125
260-
response = fsx.describe_file_systems()
261-
fss = response['FileSystems']
262-
nextToken = response.get('NextToken')
260+
while True:
261+
try:
262+
response = fsx.describe_file_systems()
263+
fss = response['FileSystems']
264+
nextToken = response.get('NextToken')
265+
sleep=.125
266+
break
267+
except botocore.exceptions.ClientError as e:
268+
if e.response['Error']['Code'] == 'TooManyRequestsException':
269+
sleep = sleep * 2 # Exponential backoff.
270+
if sleep > 5:
271+
raise e
272+
print(f"Sleeping for {sleep} seconds for initial file systems.")
273+
time.sleep(sleep)
274+
else:
275+
raise e
276+
263277
while nextToken:
264278
try:
265279
response = fsx.describe_file_systems(NextToken=nextToken)
@@ -271,7 +285,7 @@ def getFss(fsx):
271285
sleep = sleep * 2 # Exponential backoff.
272286
if sleep > 5:
273287
raise e
274-
print(f"Sleeping for {sleep} seconds for file systems.")
288+
print(f"Sleeping for {sleep} seconds for additional file systems.")
275289
time.sleep(sleep)
276290
else:
277291
raise e
@@ -286,9 +300,23 @@ def getVolumes(fsx):
286300

287301
# The initial amount of time to sleep if there is a rate limit exception.
288302
sleep=.125
289-
response = fsx.describe_volumes()
290-
volumes = response['Volumes']
291-
nextToken = response.get('NextToken')
303+
while True:
304+
try:
305+
response = fsx.describe_volumes()
306+
volumes = response['Volumes']
307+
nextToken = response.get('NextToken')
308+
sleep=.125
309+
break
310+
except botocore.exceptions.ClientError as e:
311+
if e.response['Error']['Code'] == 'TooManyRequestsException':
312+
sleep = sleep * 2 # Exponential backoff.
313+
if sleep > 5:
314+
raise e
315+
print(f"Sleeping for {sleep} seconds for initial volumes.")
316+
time.sleep(sleep)
317+
else:
318+
raise e
319+
292320
while nextToken:
293321
try:
294322
response = fsx.describe_volumes(NextToken=nextToken)
@@ -300,7 +328,7 @@ def getVolumes(fsx):
300328
sleep = sleep * 2 # Exponential backoff.
301329
if sleep > 5:
302330
raise e
303-
print(f"Sleeping for {sleep} seconds for volumes.")
331+
print(f"Sleeping for {sleep} seconds for additional volumes.")
304332
time.sleep(sleep)
305333
else:
306334
raise e
@@ -316,9 +344,23 @@ def getAlarms(cw):
316344

317345
# The initial amount of time to sleep if there is a rate limit exception.
318346
sleep=.125
319-
response = cw.describe_alarms()
320-
alarms = response['MetricAlarms']
321-
nextToken = response.get('NextToken')
347+
while True:
348+
try:
349+
response = cw.describe_alarms()
350+
alarms = response['MetricAlarms']
351+
nextToken = response.get('NextToken')
352+
sleep=.125
353+
break
354+
except botocore.exceptions.ClientError as e:
355+
if e.response['Error']['Code'] == 'TooManyRequestsException':
356+
sleep = sleep * 2
357+
if sleep > 5:
358+
raise e
359+
print(f"Sleeping for {sleep} seconds for initial alarms.")
360+
time.sleep(sleep)
361+
else:
362+
raise e
363+
322364
while nextToken:
323365
try:
324366
response = cw.describe_alarms(NextToken=nextToken)
@@ -330,7 +372,7 @@ def getAlarms(cw):
330372
sleep = sleep * 2 # Exponential backoff.
331373
if sleep > 5:
332374
raise e
333-
print(f"Sleeping for {sleep} seconds for alarms.")
375+
print(f"Sleeping for {sleep} seconds for additional alarms.")
334376
time.sleep(sleep)
335377
else:
336378
raise e

0 commit comments

Comments
 (0)