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
- 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 ✅



