Cost Optimization through Automation in AWS using Python

Listen to this Post

Automating cost optimization in AWS is a powerful way to reduce unnecessary expenses while maintaining operational efficiency. By leveraging serverless components like AWS Lambda and Amazon EventBridge, you can automate resource management without maintaining infrastructure.

Key Tools for AWS Automation

  • AWS Lambda: Execute Python scripts to stop/start instances, clean up unused resources, or trigger actions based on events.
  • Amazon EventBridge: Schedule automated tasks (e.g., stopping EC2 instances during non-business hours).
  • AWS SDK (Boto3): Programmatically interact with AWS services to enforce cost-saving policies.

You Should Know: Practical Implementation

  1. Automatically Stop EC2 Instances Using Lambda & EventBridge

Step 1: Create a Lambda Function

import boto3

def lambda_handler(event, context):
ec2 = boto3.client('ec2')
instances = ec2.describe_instances(
Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]
).get('Reservations', [])

instance_ids = []
for reservation in instances:
for instance in reservation['Instances']:
instance_ids.append(instance['InstanceId'])

if instance_ids:
ec2.stop_instances(InstanceIds=instance_ids)
print(f"Stopped instances: {instance_ids}")
else:
print("No running instances found.")

Step 2: Schedule with EventBridge

  • Go to Amazon EventBridge > Rules > Create Rule.
  • Set a cron expression (e.g., `0 20 ? ` to stop instances daily at 8 PM UTC).
  • Target the Lambda function.

2. Clean Up Unused EBS Volumes

def lambda_handler(event, context):
ec2 = boto3.client('ec2')
volumes = ec2.describe_volumes(
Filters=[{'Name': 'status', 'Values': ['available']}]
).get('Volumes', [])

for volume in volumes:
ec2.delete_volume(VolumeId=volume['VolumeId'])
print(f"Deleted volume: {volume['VolumeId']}")

3. Enforce S3 Lifecycle Policies

s3 = boto3.client('s3')

def apply_lifecycle_policy(bucket_name):
s3.put_bucket_lifecycle_configuration(
Bucket=bucket_name,
LifecycleConfiguration={
'Rules': [
{
'ID': 'DeleteOldFiles',
'Status': 'Enabled',
'Prefix': '',
'Expiration': {'Days': 30}
}
]
}
)

What Undercode Say

Automation is the future of cloud cost management. By using AWS Lambda, EventBridge, and Boto3, you can:
– Reduce manual oversight with scheduled tasks.
– Minimize wasted spending on idle resources.
– Enforce policies without human intervention.

Additional useful commands:

  • List all running instances:
    aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" 
    
  • Force-stop an EC2 instance:
    aws ec2 stop-instances --instance-ids i-1234567890abcdef0 --force 
    
  • Check AWS Free Tier usage:
    aws cloudwatch get-metric-statistics --namespace AWS/Billing --metric-name EstimatedCharges 
    

Expected Output:

A fully automated AWS environment where cost-saving policies are enforced without manual intervention.

Reference: Cost Optimization through automation in AWS using Python

References:

Reported By: Darryl Ruggles – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅

Join Our Cyber World:

💬 Whatsapp | 💬 TelegramFeatured Image