Looking at what the markup is on per-hour price of on-demand RDS instances vs on-demand EC2 instances.
See the python code for the analysis.
In the columns below
ec2
= base EC2 instances from us-east-1p
= RDS Postgres flavora-p
= RDS Aurora Postgres flavora-my
= RDS Aurora MySQL flavor
Instance class ec2 p a-p a-my
r4.8xlarge 2.128 4.000 4.640 4.640
r4.large 0.133 0.250 0.290 0.290
m4.xlarge 0.200 0.365 0.000 0.000
r3.large 0.166 0.250 0.000 0.290
r4.4xlarge 1.064 2.000 2.320 2.320
m4.10xlarge 2.000 3.654 0.000 0.000
t2.large 0.093 0.145 0.000 0.000
m3.large 0.133 0.195 0.000 0.000
r3.8xlarge 2.660 3.980 0.000 4.640
t2.xlarge 0.186 0.290 0.000 0.000
r4.2xlarge 0.532 1.000 1.160 1.160
r3.2xlarge 0.665 0.995 0.000 1.160
t2.medium 0.046 0.073 0.000 0.082
r3.xlarge 0.333 0.500 0.000 0.580
m4.16xlarge 3.200 5.844 0.000 0.000
t2.small 0.023 0.036 0.000 0.041
m3.xlarge 0.266 0.390 0.000 0.000
m3.2xlarge 0.532 0.775 0.000 0.000
r4.16xlarge 4.256 8.000 9.280 9.280
t2.2xlarge 0.371 0.580 0.000 0.000
t2.micro 0.012 0.018 0.000 0.000
m4.large 0.100 0.182 0.000 0.000
r3.4xlarge 1.330 1.990 0.000 2.320
m4.4xlarge 0.800 1.461 0.000 0.000
m4.2xlarge 0.400 0.730 0.000 0.000
r4.xlarge 0.266 0.500 0.580 0.580
m3.medium 0.067 0.095 0.000 0.000
Instance class ec2 p a-p a-my
r4.8xlarge 1.000 1.880 2.180 2.180
r4.large 1.000 1.880 2.180 2.180
m4.xlarge 1.000 1.825 0.000 0.000
r3.large 1.000 1.506 0.000 1.747
r4.4xlarge 1.000 1.880 2.180 2.180
m4.10xlarge 1.000 1.827 0.000 0.000
t2.large 1.000 1.562 0.000 0.000
m3.large 1.000 1.466 0.000 0.000
r3.8xlarge 1.000 1.496 0.000 1.744
t2.xlarge 1.000 1.562 0.000 0.000
r4.2xlarge 1.000 1.880 2.180 2.180
r3.2xlarge 1.000 1.496 0.000 1.744
t2.medium 1.000 1.573 0.000 1.767
r3.xlarge 1.000 1.502 0.000 1.742
m4.16xlarge 1.000 1.826 0.000 0.000
t2.small 1.000 1.565 0.000 1.783
m3.xlarge 1.000 1.466 0.000 0.000
m3.2xlarge 1.000 1.457 0.000 0.000
r4.16xlarge 1.000 1.880 2.180 2.180
t2.2xlarge 1.000 1.562 0.000 0.000
t2.micro 1.000 1.552 0.000 0.000
m4.large 1.000 1.820 0.000 0.000
r3.4xlarge 1.000 1.496 0.000 1.744
m4.4xlarge 1.000 1.826 0.000 0.000
m4.2xlarge 1.000 1.825 0.000 0.000
r4.xlarge 1.000 1.880 2.180 2.180
m3.medium 1.000 1.418 0.000 0.000
In pricing comparisons you should also consider storage costs. The pricing for MySQL and Postgres RDS instance are the same, as are both flavors of Aurora. Aurora uses a very different pricing model than normal RDS, based off usage instead of privisioned storage (so less like EC2).
For Aurora:
- Storage Rate $0.10 per GB-month
- I/O Rate $0.20 per 1 million requests
- Backup storage is free up to size of depoyed database, extra is based on S3 rates
- The cost of Multi-AZ deployments is simply the cost of the primary instance plus the cost of each Amazon Aurora Replica.
- You pay only for the storage and IOs your Amazon Aurora database consumes and do not need to provision in advance.
For MySQL:
- General purpose SSDs
- single AZ
- $0.115 per GB-month
- Multi-AZ
- $0.23 per GB-month
- single AZ
- Provisioned IOPS are extra
- single AZ
- $0.125 per GB-month
- $0.10 per IOPS-month
- multi AZ
- $0.25 per GB-month
- $0.20 per IOPS-month
- single AZ
- Additional backup storage for your provisioned database storage is billed at $0.095 per GB-month
For Postgres:
- General purpose SSDs
- single AZ
- $0.115 per GB-month
- Multi-AZ
- $0.23 per GB-month
- single AZ
- Provisioned IOPS are extra
- single AZ
- $0.125 per GB-month
- $0.10 per IOPS-month
- multi AZ
- $0.25 per GB-month
- $0.20 per IOPS-month
- single AZ
- Additional backup storage for your provisioned database storage is billed at $0.095 per GB-month
Note that some of these numbers have changed.
One that jumps out to me: Aurora backup is now just $0.021/gb-mo in us-east-1 (https://aws.amazon.com/rds/aurora/pricing/), which is the same price per GB that you get for S3 when storing >500 TB! RDS storage for the other engines is close to EBS pricing, which is closer to $0.10/GB-month.
I mentioned before that it was charged at S3 rates, but they seem to have made the pricing simpler and set that up at a discount.