-session = boto3.session.Session(**{k:v for k,v in vars(args).items() if k in ('profile_name', 'region_name')})
-queue = session.resource('sqs').get_queue_by_name(QueueName=args.queue)
-topic = session.resource('sns').Topic(args.arn) if args.arn else None
-ec2r = session.resource('ec2')
+# occasionally, small instances seem to briefly lose their iam credentials
+sessionTriesRemaining = 3
+while sessionTriesRemaining:
+ try:
+ session = boto3.session.Session(**{k:v for k,v in vars(args).items() if k in ('profile_name', 'region_name')})
+ queue = session.resource('sqs').get_queue_by_name(QueueName=args.queue)
+ topic = session.resource('sns').Topic(args.arn) if args.arn else None
+ ec2r = session.resource('ec2')
+ except botocore.exceptions.NoCredentialsError as e:
+ logging.debug('Trouble with credentials, will retry %s more times.', sessionTriesRemaining)
+ sessionTriesRemaining -= 1
+ time.sleep(5)
+ continue
+ break
+if sessionTriesRemaining == 0:
+ logging.error('Failed trying to use IAM credentials.')
+ sys.exit(1)