Anodot Cost includes Recommendations for the AWS services listed below. Click on a service to view the relevant name, type, logic source, and description.
EC2 | RDS | DynamoDB | Load Balancer |
S3 | EBS | Redshift | Neptune |
Elasticsearch | OpenSearch | EKS K8s | ElastiCache |
DocumentDB | VPC | Kinesis | CloudTrail |
KMS | ECS Fargate | AWS Backup | CloudWatch |
EKS K8s
Name |
Type |
Logic source |
Description |
---|---|---|---|
K8s Workload Rightsizing | 'k8s_rightsizing' | Anodot | |
EKS Extended Support | 'EKS_Ext' | Anodot |
Identify Clusters that are about to be charged on Extended Support charges or already charged to avoid unexpected costs and plan upgrades effectively.
Algorithm:
|
EC2
Name |
Type |
Logic source |
Description |
---|---|---|---|
IP Unattached | 'ip-unattached' | Anodot | Identify IPs that are active, but no longer attached to any instance. |
EC2 Generation Upgrade | 'version-upgrade' | Anodot |
Suggest using latest generation of instances to get the best performance and pricing. Preferences:
Savings Algorithm Hourly Usage Basis: When calculating cloud cost savings, we base our analysis on the actual hourly usage of each instance. This approach ensures that savings are accurately aligned with the precise consumption patterns of your infrastructure. For example:
By using this method, we provide a more detailed and actionable view of your cost savings opportunities, reflecting real-world usage rather than static, time-independent estimates.
|
Idle EC2 instance | 'ec2-idle' | Native + Anodot validation | Identifying EC2 instances that have a low CPU. for example when the daily average CPU is less than 1% and network in/out is lower than 10MB. |
EC2 Rightsizing | 'ec2-low-cpu-usage' | Native + Anodot validation |
The recommendations are consumed from the cost management explorer compute optimizer and then manipulated by Anodot's algorithm.
Algorithm:
Identify EC2 instances using low CPU and recommend to switch the instance type to a more suitable one which will cost less within the same family type.
The recommendation algorithm will examine your memory utilization if you will enable your AWS CloudWatch agent, more details on the required memory metrics can be found here.
Savings Algorithm Hourly Usage Basis: When calculating cloud cost savings, we base our analysis on the actual hourly usage of each instance. This approach ensures that savings are accurately aligned with the precise consumption patterns of your infrastructure. For example:
By using this method, we provide a more detailed and actionable view of your cost savings opportunities, reflecting real-world usage rather than static, time-independent estimates.
The following preferences should be qualified in order to be taken into account for the recommendation.
Note: In cases where the EC2 instance doesn't exist in the invoice the recommendation consumed from AWS will be filtered out. |
Compute Savings Plan | 'ec2-savings-plans' | Anodot | Recommendation to commit to a certain Savings plan, based on daily hourly usage being above the stated commitment. |
Stopped EC2 instance | 'ec2-stopped-instance' | Anodot | Identify EC2 instances that are stopped but still carry additional EBS and/or Public IP charges. this is being checked for instances that are stopped up to 7 days. (subject to preferences). |
EC2 Unnecessary Data Transfer | 'ec2-udt' | Anodot | AWS charges for inter-Availability Zones data transfer between Amazon EC2 instances within the same region. We identify resources that have inter-Availability Zones Data Transfer and suggest to co-locate it within the same Availability Zone to avoid unnecessary data transfer charges. |
IP Migration v4 to v6 | 'ipv4_ipv6_migration' | Anodot |
AWS charges 0.005 per IP, per hour for all public IPv4 addresses, whether it's attached to AWS service or not.
Preferences: The following preferences should be qualified in order to be taken into account for the recommendation.
|
RDS
The RDS Right-Sizing Recommendations provide you with a list of RDS instances that can be optimized. The Anodot Cost algorithm takes into account historical usage patterns and performance metrics, and provides you with data-driven recommendations according to your requirements.
When considering the cost of Amazon RDS, it is essential to understand the key cost components associated with it. AWS RDS cost is primarily influenced by the following factors:
-
Instance Types: The choice of instance types determines the underlying hardware, compute power, and memory allocated to your database. Different instance types have varying costs, and selecting the right one based on your workload requirements is crucial.
-
Database Engine: The database engine you choose, such as Amazon Aurora, MySQL, PostgreSQL, or others, can impact cost due to differences in licensing fees, storage requirements, and performance characteristics.
-
Provisioned Storage: AWS RDS provides storage for your databases, and the amount of provisioned storage directly affects the cost. It is essential to estimate your storage needs accurately to avoid unnecessary expenses.
-
Multi-AZ Deployment: Enabling Multi-AZ (Availability Zone) deployment enhances high availability but comes at an additional cost. This feature replicates your database across multiple AZs, ensuring automatic failover in the event of an infrastructure issue.
Name |
Type |
Logic source |
Description |
---|---|---|---|
RDS Right-sizing |
'rds-class-change' |
Anodot |
Identify if the RDS instances have cheaper suitable alternatives considering the instance's current utilization + CPU spare capacity on top.
Algorithm:
Preferences The following preferences should be qualified in order to be taken into account for the recommendation:
|
RDS Provisioned IOPS |
'rds-iops-change' |
Anodot |
Decrease Provisioned IOPS.
Algorithm:
Preferences The following preferences should be qualified in order to be taken into account for the recommendation:
|
RDS Generation Upgrade | 'rds-version-upgrade' | Anodot |
Suggest using the latest generation of instances to get the best performance and pricing. Savings Algorithm Hourly Usage Basis: When calculating cloud cost savings, we base our analysis on the actual hourly usage of each instance. This approach ensures that savings are accurately aligned with the precise consumption patterns of your infrastructure. For example:
By using this method, we provide a more detailed and actionable view of your cost savings opportunities, reflecting real-world usage rather than static, time-independent estimates. |
RDS Reserved -Instance | 'rds-ri' | Anodot | RI purchase recommendations are based on customer historical usage. These recommendations are calculated by analyzing all incurred usage eligible to be covered by an RI (e.g. On-Demand usage) and using our unique algorithms to simulate possible combinations of RI’s that would cover that usage. |
Idle RDS Instance | 'rds-idle' | Anodot | Identifying RDS instances with no more than 1 connection within the last 7 days and recommending to terminate the instance. |
RDS Extended Support | 'rds-Ext' | Anodot |
Identify RDS Clusters/Instances that are about to be charged on Extended Support charges or already charged to avoid unexpected costs and plan upgrades effectively.
Algorithm:
|
RDS Storage Type Change | Anodot |
The RDS storage type change recommendation analyzes your current database storage configuration and suggests migrating to a more cost-effective or performance-aligned storage option. The recommendation process considers the following preferences:
Supported volume types:
|
|
RDS Aurora I/O Optimized | 'rds-iops-optimized' | Anodot |
This recommendation identifies Amazon Aurora clusters where switching to the I/O-Optimized configuration can reduce costs for I/O-heavy workloads. The analysis is based on the last 30 days of usage, comparing current costs (instance, storage, and IOPS) with projected costs under the I/O-Optimized model, and recommending only if the new model is profitable.
|
ECS Fargate
Over-provisioning Amazon ECS task CPU and memory incurs unnecessary costs while under-provisioning them can lead to poor application performance. Anodot delivers actionable recommendations so you can optimize task CPU and memory for your Amazon ECS services running on Fargate. Anodot provides using 'Compute Optimizer' recommendations for container-level CPU and memory configurations as necessary when downsizing tasks to ensure compatibility between task and associated container configurations.
Learn more about AWS Compute Optimizer
Name |
Type |
Logic source |
Description |
---|---|---|---|
ECS Fargate Right-sizing |
'fargate_rigthsize' |
Native + Anodot validation |
Identify if the ECS Fargate instances have cheaper suitable alternatives considering the instance's current utilization. Prerequisite
Algorithm: The recommendation is to explore the ECS utilization metrics in the past 14 days. |
CloudWatch
Name |
Type |
Logic source |
Description |
||||||
---|---|---|---|---|---|---|---|---|---|
CloudWatch Logs Class Change | Anodot |
The AWS CloudWatch service should only be a small part of the cloud bill. For the log collection, AWS announced a new log class (Infrequent Access) that is cheaper by 50% than the current log class (standard).
There are two log collection types, and we need to identify them to calculate the costs and savings:
Algorithm:
|
DynamoDB
Name |
Type |
Logic source |
Description |
---|---|---|---|
Idle Dynamo DB | 'dynamodb-idle' | Anodot | Identifying DynamoDB tables that have not been reached in the last 21 days (subject to preferences). Recommending to delete it or cancel the IOPS commitment. |
Load Balancer
Name |
Type |
Logic source |
Destination |
---|---|---|---|
Idle Load Balancer | 'idle-load-balancer' | Anodot | Identifying when the load balancer is not attached to any instance and that its LCU is zero in the past 7 days . (An LCU measures the dimensions on which the Application Load Balancer processes your traffic). |
S3
Simple Storage Service (S3) is one of the top 10 cost items for most AWS customers, with the following main parameters affecting the S3 cost and usage:
- Bucket size
- Number of read and write commands
- Time to retrieve data
To help resolve these issues, Anodot Cost provides the following recommendations for S3:
- Versioning and lifecycle rule combinations: Logic dictates that buckets that are defined with versioning turned on are bound to accumulate large numbers of the same file. Anodot Cost, therefore, recommends lifecycle rules that will transition older versions of the files to other storage classes, or delete them altogether.
- Change bucket storage class: Buckets are created by default at the standard storage class which is ideal when the objects in them are accessed very often. In many cases, access requests decrease in a significant manner, making the bucket less cost-effective. Taking into consideration the transition cost from one storage class to another, and the cost after the transition, Anodot Cost offers cost reduction suggestionas on infrequently accessed buckets.
- Terminate idle buckets: Idle buckets are buckets that were not accessed at all within a certain period. These buckets accumulate storage cost, which Anodot Cost recommends reducing by either removing them or moving them to Glacier storage class(es).
Note: All S3 recommendations are active and available without "S3 storage lens advanced".
Optional: In order for the recommendation to rely on the actual number of all API calls, and nonCurrent file you need to enable the “S3 Storage lens advanced" option and publish the information to CloudWatch metrics.
Name |
Type |
Logic source |
Description |
---|---|---|---|
Inactive S3 | 's3-idle' | Anodot | Identifying S3 Buckets that are inactive in the last 60 days. |
S3 Multipart upload | 's3-multipart-upload' | Anodot | Looking into all S3 buckets and identifying unfinished multipart uploads that have been up for over 3 days and still incur charges. |
S3 Storage Class (New) |
's3-storage-class' | Anodot | Identifying S3 buckets in the standard storage class and low access, suggesting to move them to cheaper storage classes. |
S3 Versioning (New) |
's3-versioning' | Anodot | Identifying S3 buckets that are configured with versioning and do not have lifecycle rules defined to manage the older versions of files. |
EBS
Name |
Type |
Logic source |
Description |
---|---|---|---|
Unattached EBS | 'ebs-unattached' | Anodot | Identify EBS instances that are active, but no longer attached to any instance. Subject to preferences for the days to be checked.
When using the default "days to be checked" (that is zero), we are looking for currently unattached EBS. If this value is changed to 7 days for example it will check for all EBS that are unattached already for 7 days. |
EBS Type Change | 'ebs-type-change' | Anodot | Identify EBS types to be changed to reduce costs and to suit performance needs, based on the usage in the past 14 days (subject to preferences).
The recommendation is applicable when saving >5%. We recommend transitioning to more cost-efficient and performance-optimized EBS volume types:
Note that in contrast to the other recommendations, the chart displayed for this service is called IOPS PERFORMANCE. An additional chart called THROUGHPUT PERFORMANCE is shown with the following metrics:
|
Outdated EBS Snapshot | 'ebs-outdated-snapshot' | Anodot |
Identifying EBS outdated Snapshot age that is more than 21 days (subject to preferences). Anodot identifies snapshots that have high (costs ±42$ per year) and is not connected to any image.
Algorithm: 1) Retrieve the existing snapshot date from the API. 2) Validate that there's not connected to any existing AMI at this point 3) Retrieve the average daily cost. 4) Multiply the average daily cost by the number of days that the snapshot exists until the recommendation creation. |
AMI Orphaned Snapshot | Anodot |
Identifying EBS snapshots created for AMIs that are no longer in use. An “orphaned AMI” means that the AMI itself has been deleted, but its associated snapshots still remain, incurring ongoing storage costs without serving any active purpose.
Anodot identifies snapshots that have high (costs ±42$ per year) and is not connected to any image.
Algorithm: 1) Retrieve the existing snapshot date from the API. 2) Validate that there's not connected to any existing volume at this point 3) Retrieve the average daily cost. 4) Multiply the average daily cost by the number of days that the snapshot exists until the recommendation creation. |
AWS Backup
Name |
Type |
Logic source |
Description |
---|---|---|---|
AWS Backup Outdated Snapshot | 'aws-backup-outdated-snapshot' | Anodot |
Identifying AWS Backup outdated Snapshot age that is more than 21 days (subject to preferences). Anodot identifies snapshots that have high (costs ±42$ per year) and is not connected to any image.
Algorithm: 1) Retrieve the existing snapshot date from the API. 2) Retrieve the average daily cost. 3) Multiply the average daily cost by the number of days that the snapshot exists until the recommendation creation. |
Redshift
Name |
Type |
Logic source |
Description |
---|---|---|---|
Redshift Idle | 'redshift-util-low' | Anodot | Identifying low utilization of Redshift clusters, when there were zero connections within a time period of 7 days (subject to preferences). |
Neptune
Name |
Type |
Logic source |
Description |
---|---|---|---|
Neptune DB Idle | 'neptune-util-low' | Anodot | Identifying resource as idle when number of requests per second to the Gremlin engine and the number of requests per second to the SPARQL engine are zero in the past 7 days (subject to preferences). |
Elasticsearch
Name |
Type |
Logic source |
Description |
---|---|---|---|
Elasticsearch Idle | 'es-util-low' | Anodot | When indexing rate and search rate are zero, over 7 days (default) |
OpenSearch
Name |
Type |
Logic source |
Description |
---|---|---|---|
OpenSearch RI | 'opensearch-ri' | Anodot | RI purchase recommendations are based on customer historical usage. These recommendations are calculated by analyzing all incurred usage eligible to be covered by an RI (e.g. On-Demand usage) and using our unique algorithms to simulate possible combinations of RI’s that would cover that usage. Based on usage within the past 21 days. |
ElastiCache
Name |
Type |
Logic source |
Description |
---|---|---|---|
ElastiCache Idle | 'elasticache-util-low' | Anodot | ElastiCache resource is identified as idle if it has 0 connections within the past 7 days (subject to preferences). |
ElastiCache RI | 'elasticache-ri' | Anodot | RI purchase recommendations are based on customer historical usage. These recommendations are calculated by analyzing all incurred usage eligible to be covered by an RI(e.g. On-Demand usage) and using our unique algorithms to simulate possible combinations of RI’s that would cover that usage. |
DocumentDB
Name |
Type |
Logic source |
Description |
---|---|---|---|
DocumentDB Idle | 'documentdb-util-low' | Anodot | Identifying DocumentDB resources that are idle in the past 7 days (subject to preferences). |
VPC
Name |
Type |
Logic source |
Description |
---|---|---|---|
NAT Gateway Idle | 'nat-gateway-util-low' | Anodot | Identifying NAT Gateway service that had no connections for the past 7 days (subject to preferences). |
AWS VPC Interface endpoint Idle |
Anodot |
Identifying VPC interface endpoints that are running but not actively transmitting data, which could represent unnecessary costs. This recommendation specifically evaluates the usage of VPC Interface Endpoints (not Gateway Endpoints) based on the following logic:
The recommendation process considers the following preferences:
By identifying idle interface endpoints, this recommendation helps reduce unnecessary costs by prompting users to remove or decommission unused endpoints. |
Kinesis
Name |
Type |
Logic source |
Description |
---|---|---|---|
Kinesis Idle | 'kinesis-util-low' | Anodot | Identifying a scenario where no put record requests occurred in the past 7 days. |
CloudTrail
Name |
Type |
Logic source |
Description |
---|---|---|---|
Duplicate CloudTrail | 'cloudtrail-duplicate-trails' | Anodot | Management events that are delivered for both member account and management account will incur duplicated charges. We therefore suggest to terminate trails associated with the member account. |
KMS
Name |
Type |
Logic source |
Description |
---|---|---|---|
Disabled KMS | 'kms-idle' | Anodot | Identify Keys that are disabled and may not be used but still incur cost for keeping them. |
Old KMS | 'kms-old' | Anodot | Aged Keys that were created at least 1 year ago (subject to preferences). |
RDS Billed states
RDS States, Billed State
available, Billed
configuring-enhanced-monitoring, Billed
configuring-iam-database-auth, Billed
configuring-log-exports, Billed
converting-to-vpc, Billed
creating, Not billed
deleting, Not billed
failed, Not billed
inaccessible-encryption-credentials, Not billed
incompatible-network, Not billed
incompatible-option-group, Billed
incompatible-parameters, Billed
incompatible-restore, Not billed
insufficient-capacity, Billed
maintenance, Billed
modifying, Billed
moving-to-vpc, Billed
rebooting, Billed
resetting-master-credentials, Billed
renaming, Billed
restore-error, Billed
starting, Billed for storage
stopped, Billed for storage
stopping, Billed for storage
storage-full, Billed
storage-optimization, Billed
upgrading, Billed