What are hidden costs or "NOT obvious" costs on AWS - amazon-web-services

AWS says that everything is "pay as you use". But are there any hidden costs or "NOT obvious" costs on AWS ?

Costs which generally are ignored by people and can give shock:
It is recommended that we deploy our application in Multi AZ for High availability. We assume that data transfer between these servers will be free as this is like intranet; but that is not true. There are charges ( around 10% of internet bandwidth charges ) for data transfer across AZ in same region.
Data transfer within AWS and across AWS regions is also charged.
On AWS Aurora; by default provisioned IOPS are enabled which leads to a huge bill.
If Versioning is enabled on S3; then u need to pay for all versions of every object.
These are not hidden charges but can give you a shock:
Even on other RDS; if u use provisioned IOPS it leads to a huge bill depending on usage.

I think one of the most confusing parts of AWS is the 'EC2-Other' cost category. Most of these costs are based on utilization and can get out of control quickly. I did a write up on how to break down EC2-Other here: EC2-Other Cost Breakdown

Related

Is there a cost difference if I want to access AWS resources from a geographically nearer location to the end user?

Is there any cost difference or any other type of difference(latency, performance, data corruption etc.) for regions?? I am making primarily a IoT service stack.
Each region has its own prices for services, this will generally vary marginally with some regions (such as us-east-1, eu-west-1) generally costing less overall.
Generally data transfer itself is the same from the source to destination (defined at the region level), however CloudFront does charge depending on the nearest edge location to the user.
Latency will definitely impact your end users so it is worth investing in a region closer to them so that this can be minimised. You can get a rough guideline from CloudPing.
You should check each services pricing page to get more of a breakdown of the overall costs you'd pay in a region. However, generally you need to decide between performance and cost so you should evaluate between the both of these.
Also bare in mind that new service releases and features are rolled out to specific regions at a time, if you want to use the latest features you may want to decide on a region that is known to get them earlier.
In Short Yes.. Each region in AWS has different costs associated with same services. There are some exceptions as well but generally it s the case. e.g. IOT Core service prices in US East region is $0.08 (per million minutes of connection) vs $0.092 (per million minutes of connection) in ASIA Pacific region. This is 15% increase but if you are going to use let's say 100 million minutes of connections then the difference is just around a Dollar!!!
However if any of your device in Asia region wants to send some data to US Region then there will definitely be latency & performance issues. So it is always better to use nearby region. You can always go to the pricing page of AWS Service you are going to use and check Costs.

How to limit number of reads from Amazon S3 bucket

I'm hosting a static website in Amazon S3 with CloudFront. Is there a way to set a limit for how many reads (for example per month) will be allowed for my Amazon S3 bucket in order to make sure I don't go above my allocated budget?
If you are concerned about going over a budget, I would recommend Creating a Billing Alarm to Monitor Your Estimated AWS Charges.
AWS is designed for large-scale organizations that care more about providing a reliable service to customers than staying within a particular budget. For example, if their allocated budget was fully consumed, they would not want to stop providing services to their customers. They might, however, want to tweak their infrastructure to reduce costs in future, such as changing the Price Class for a CloudFront Distribution or using AWS WAF to prevent bots from consuming too much traffic.
Your static website will be rather low-cost. The biggest factor will likely be Data Transfer rather than charges for Requests. Changing the Price Class should assist with this. However, the only true way to stop accumulating Data Transfer charges is to stop serving content.
You could activate CloudTrail data read events for the bucket, create a CloudWatch Event Rule to trigger an AWS Lambda Function that increments the number of reads per object in an Amazon DynamoDB table and restrict access to the objects once a certain number of reads has been reached.
What you're asking for is a very typical question in AWS. Unfortunately with near infinite scale, comes near infinite spend.
While you can put a WAF, that is actually meant for security rather than scale restrictions. From a cost-perspective, I'd be more worried about the bandwidth charges than I would be able S3 requests cost.
Plus once you put things like Cloudfront or Lambda, it gets hard to limit all this down.
The best way to limit, is to put Billing Alerts on your account -- and you can tier them, so you get a $10, $20, $100 alerts, up until the point you're uncomfortable with. And then either manually disable the website -- or setup a lambda function to disable it for you.

How can I calculate the cost of enhanced monitoring on a particular RDS Instance.

I want to setup enhanced monitoring on one of our RDS instances. But I am not able to calculate the cost it will incur every month.
I checked the aws doc at https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.html and it says it depends on the several factors, one of them being logs which are free for upto 5gb per month under free tier(the free tier is only for the initial one year and these 5gb will not be applicable for the older aws accounts if am right). Rest 3 somehow seems to again related to writing logs.
Please help me on how I can calculate the cost incurred only due to enabling of enhanced monitoring on an AWS RDS instance.
--Junaid.
RDS's enhanced monitoring cost is just CloudWatch cost
One of the biggest part of CW cost is the total amount of logs you write in Bytes which is about $0.50/GB ( varies in different regions )
Back on to the question, you can approximate the cost incur by just enabling detailed monitoring, I suggest start with one minute granularity. After a few hour, you will have some logs appear in your CW logs. You can get the total amount of data ingestion and estimate from there
Personally, logging at 1 minute interval for a single RDS DB cost me close to $0.00

Availability SLA vs Designed for availability

I am trying to find out the availability percentage of Amazon's S3. The link is below.
https://aws.amazon.com/s3/storage-classes/
What is the difference between Availability SLA and Designed for availability?
You seem to bit confused , let me try to explain in simpler terms from AWS Documentation :
Availability SLA and Designed for availability?
The Plain English Translation would be I can design X service to be available for X Percentage , that is just saying that I have designed it such way!
The Availability SLA is you can think of contract that legally binds them to serve it so terms defined it it are absolute.
It is Designed for durability of 99.999999999% of objects.
- That simply means that the chances of durability of object stored in s3 is that mentioned above.
Now,
Designed for 99.99% availability over a given year.
- Now this is what they say would be s3 as a service you use would be available and availability of S3 as Service is backed by Amazon S3 Service Level Agreement for availability.
What is S3 Service Commitment according to Amazon S3 Service Level Agreement for availability.:
AWS will use commercially reasonable efforts to make Amazon S3
available with the applicable Monthly Uptime Percentage (as defined
below) during any monthly billing cycle (the “Service
Commitment”). In the event Amazon S3 does not meet the Service
Commitment, you will be eligible to receive a Service Credit.
Definitions:
“Error Rate” means: (i) the total number of internal server errors returned by Amazon S3 as error status “InternalError” or
“ServiceUnavailable” divided by (ii) the total number of
requests for the applicable request type during that five minute
period. We will calculate the Error Rate for each Amazon S3 account
as a percentage for each five minute period in the monthly billing
cycle. The calculation of the number of internal server errors will
not include errors that arise directly or indirectly as a result of
any of the Amazon S3 SLA Exclusions (as defined below).
“Monthly Uptime Percentage” is calculated by subtracting from 100% the average of the Error Rates from each five minute period in
the monthly billing cycle.
A “Service Credit” is a dollar credit, calculated as set forth below, that we may credit back to an eligible Amazon S3 account.
Hope this clears your doubt.

Does the AWS Billing Management Dashboard take into account Free Tier usage

About a month ago I opened an AWS account to try out Amazon's own tutorial for EC2 services, only to give up after encountering an error.
Today I accessed my account once again, only to find out three tasks have been running in the background the whole month. My Billing Management Dashboard shows a hefty total in the upper right, but in the "free usage" tier the only exceeded entry is S3 Puts, of about 10%.
I can't seem to find a soruce anywhere in the documentation explaining whether the total billing in the upper right takes into account the Free Tier or not. At the end of this month, will I be billed entirely or only the % difference? I'm more or less okay with the latter, but I can't really afford the former.
I've obviously opened a support ticket right away, but since I'm on the basic plan I'm afraid they might answer me after the current bill becomes active.
Thank you for any answers.
You will be billed only for the % difference.
All services that offer a free tier have limits on what you can use without being charged. Many services have multiple types of limits. For example, Amazon EC2 has limits on both the type of instance you can use, and how many hours you can use in one month. Amazon S3 has a limit on how much memory you can use, and also on how often you can call certain operations each month. For example, the free tier covers the first 20,000 times you retrieve a file from Amazon S3, but you are charged for additional file retrievals. Each service has limits that are unique to that service.
Source: http://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/free-tier-limits.html