A customer came to me with a request. They do not want to use a NAT gateway from their VPC to access the AWS API's. They had a number of security concerns regarding the use of a NAT gateway (no control, logs, auditing - but that is a for a different post) and they asked for a solution.
The AWS API's that they needed access to were:
- S3
- KMS
- SSM
- Cloudwatch
- Cloudformation
Last year at re:Invent AWS announced the option to create VPC Interface endpoints using PrivateLink and have steadily been adding more endpoints over the past year.
With the use of these endpoints you can actually have a VPC with instances that will not have any internet access (at least not through AWS) and still be able to interact with all the AWS API's.
This is technically possible - and can easily be automated, but I wanted to look at the cost perspective.
The VPC in us-east-1 has 2 Availability Zones (you should always have at minimum 2).
That would mean deploying 2 NAT gateways in your VPC (Pricing)
I am going to assume that you have the same amount of data going through both options - so I will not factor this into the price.
Usually you have 730 hours in a month.
Each NAT gateway will cost you 0.045*730 = ~$33.
Total for 2 NAT Gateways would be $66 per month (not including traffic).
What does this look like for Interface Endpoints? (Pricing)
Each Endpoint will need to be deployed in both AZ's in pairs.
Each Interace Endpoint will cost 0.01*730*2 = ~15
Total for all the endpoints above (4 Interface Endpoints - KMS, SSM, CloudWatch and Cloudformation) would be $60 per month.
The S3 endpoint is a Gateway endpoint - and therefore does not cost you any extra.
As you can see - it is not that much cheaper.
Take into account the following scenario - you need API access to 15 out of the 21 possible interface Endpoints
This would run you the steep amount of $225 per month - which is a lot more than just a NAT Gateway.
Design decisions always have tradeoffs - sometimes you prefer security and other times it will be cost. I hope that this will enable you to make an informed decision in your VPC design.