cwlogs.py 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/env python3
  2. #----------------------------------------------------------------------------
  3. # Dumps a cloudwatch logs log group to a text file. The main intention for
  4. # this is to make codebuild-in-packer use cases easier. The CWL UI is not
  5. # optimized for viewing long logfiles.
  6. #
  7. # Use something like
  8. # AWS_PROFILE=mdr-common-services-gov ./cwlogs.py \
  9. # /aws/codebuild/xdr-ec2-threatq-image \
  10. # 52a94d94-cacb-4cff-8b35-f5aeb39c9c00
  11. #----------------------------------------------------------------------------
  12. import sys
  13. import boto3
  14. if __name__ == "__main__":
  15. client = boto3.client('logs')
  16. keepgoing = True
  17. nextToken = None
  18. while keepgoing is True:
  19. kwargs = {
  20. 'logGroupName': sys.argv[1],
  21. 'logStreamName': sys.argv[2],
  22. 'startFromHead': True
  23. }
  24. if nextToken is not None:
  25. kwargs['nextToken'] = nextToken
  26. elif 'nextToken' in kwargs:
  27. kwargs.pop('nextToken')
  28. resp=client.get_log_events(**kwargs)
  29. if 'events' in resp:
  30. for e in resp.get('events'):
  31. print(e.get('message'),end='')
  32. if len(resp.get('events')) == 0:
  33. keepgoing = False
  34. if 'nextForwardToken' in resp:
  35. nextToken = resp['nextForwardToken']
  36. else:
  37. nextToken = None