Untitled
unknown
plain_text
6 months ago
2.7 kB
2
Indexable
''' adjust_cloudwatch_retention.py Ally Jade Veil written for DEVOPS-22952 About: This script adjusts the retention policy of specified CloudWatch log groups. Usage: adjust_cloudwatch_retention.py [--days DAYS] [--log-group LOG_GROUP] --days: Type: int Default: 365 Description: Number of days to retain log events. Log events older than this number of days will be purged. Example: --days 7 --log-group: Type: str Default: all Description: The name of the CloudWatch log group to adjust. If set to 'all', the script will adjust all log groups. Example: --log-group my-log-group ''' # Imports import argparse import boto3 # Functions def adjust_log_group_retention(logs_client, log_group_name, retention_days): """ Adjust the retention policy for the specified CloudWatch log group. """ try: logs_client.put_retention_policy( logGroupName=log_group_name, retentionInDays=retention_days ) print(f"Adjusted retention policy of log group '{log_group_name}' to {retention_days} days.") except Exception as e: print(f"Error adjusting retention policy for log group '{log_group_name}': {e}") def get_enabled_regions(): """ Get the list of enabled regions for the AWS account. """ ec2_client = boto3.client('ec2') response = ec2_client.describe_regions(AllRegions=False) enabled_regions = [region['RegionName'] for region in response['Regions']] return enabled_regions # Main # Argument parsing parser = argparse.ArgumentParser( description='Adjust CloudWatch log group retention and purge old log events.' ) parser.add_argument( '--days', type=int, default=365, help='Number of days to retain log events. Default is 365.' ) parser.add_argument( '--log-group', type=str, default='all', help='The name of the CloudWatch log group to adjust. Default is all.' ) args = parser.parse_args() log_group_name = args.log_group retention_days = args.days # Iterate through all enabled regions and check CloudWatch log streams in each regions = get_enabled_regions() for region in regions: logs_client = boto3.client('logs', region_name = region) if log_group_name == 'all': log_groups = logs_client.describe_log_groups()['logGroups'] for log_group in log_groups: group_name = log_group['logGroupName'] adjust_log_group_retention(logs_client, group_name, retention_days) else: adjust_log_group_retention(logs_client, log_group_name, retention_days) print("\nLog group retention adjustment complete.")
Editor is loading...
Leave a Comment