Untitled
unknown
plain_text
a year ago
2.7 kB
4
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