Buy AWS Accounts: For back end processes (Non UI, background processes etc) use spot instances. Spot instances have lowest per hour charges among On-demand, Reserved and well Spot instances. If your application requirements are steady and long term, using Reserved instances saves good money. Reserved instance prices are up to 75% lesser than On-demand instances.
When setting up auto-scaling, scale up quickly and scale down slowly. Remember that each stop and start (even if instance ran only for a 1 second) is counted as one full hour for Amazon AWS billing purposes. Use smaller EC2 sizes with Auto scaling, instead of larger sizes.
Delete unused EBS volumes and snapshots.
Delete Elastic IP when not assigned to any instance. Unassigned Elastic IP are charge.
Simple Storage Service (S3):
Use Simple storage service (s3) life cycle management of objects and move objects to Glacier where applicable. For objects that can be easily reproduced (for example, image thumbnails), use “Reduced redundancy” storage class that has lower charges than “standard” storage.
In addition to storage, S3 charges for both bandwidth and number of http requests. For example, one 50MB object retrieval cost is lesser than two 25MB object retrievals. Consolidate objects (e.g, log files) while storing in S3, to reduce access (http) charges of S3.
Amazon Content Delivery Network (CDN) – CloudFront:
Using Amazon CloudFront with Simple Storage (S3) behind, reduces S3 access charges and also improves performance of applications due to caching by the CloudFront servers. Pay attention to “Price Class” of CloudFront. This effects your CloudFront charges.
Use Billing Alerts that trigger notifications when charges exceed certain preset values. This helps in avoiding AWS billing shocks.
Use CloudWatch to measure usage of every AWS resource. CloudWatch provides metrics of AWS resources usage, that you can use to optimize given AWS resource. For example, you may be using an Elastic Computing (EC2) configuration that is not really require or auto scaling EC2 instances are not sufficient during heavy load conditions.