Skip to content

Instantly share code, notes, and snippets.

@mgla
Last active January 9, 2020 09:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mgla/4b6e36d42aaa0c8577482849a9196ddc to your computer and use it in GitHub Desktop.
Save mgla/4b6e36d42aaa0c8577482849a9196ddc to your computer and use it in GitHub Desktop.
#!/usr/bin/env python3
import os
import boto3
import botocore
def paginate(method, **kwargs):
""" Generic boto paginator class """
client = method.__self__
paginator = client.get_paginator(method.__name__)
for page in paginator.paginate(**kwargs).result_key_iters():
for result in page:
yield result
def main():
# Boto3 MFA session magic
working_dir = os.path.join(os.path.expanduser('~'), '.aws/cli/cache')
session = botocore.session.get_session()
provider = session.get_component('credential_provider').get_provider('assume-role')
provider.cache = botocore.credentials.JSONFileCache(working_dir)
session = boto3.Session(botocore_session=session)
logs = session.client('logs')
for log_group in paginate(logs.describe_log_groups):
group = log_group['logGroupName']
print(group)
res = logs.list_tags_log_group(
logGroupName=group
)
if res['tags'] == {}:
logs.tag_log_group(
logGroupName=group,
tags={
'CustomerProject': ('GLK%s' % group) # CustomerProject is an AWS cost tag here
}
)
else:
print(res['tags'])
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment