Serverless, as the name suggests takes the hosting and complex infrastructure elements away and helps developers and programmers to deploy their code to Production.
All the underlying infrastructure, availability, and scaling would be taken care of by the service provider.
For Cloud Functions its Google, ForLambda its AWS so on and so forth
When we say they take care of the hosting and the infrastructure. We need to know how much they will charge for the same.
While most of the cloud providers give generous cost models, sometimes it is hard to calculate how much we are spending towards serverless.
In this article, let us talk about how AWS Lambda serverless cost is calculated and how we can calculate the cost per lambda function when there are too many.
How to calculate AWS Lambda Costs?
If you do not want to dig too much deeper and simply try to create a quote or estimation, the right place is calculator.aws
But if you would like to understand a big Number in your bill or want to find out which Lambda function costs you how many dollars or how the Cost is calculated for Lamda.
Please read further.
How AWS Lambda cost is calculated?
Four Key Elements that determine your aws lambda function cost
- Number of Requests for the Function
- Duration of each Request handled by the Function
- Allocated Memory for the Function
- Storage allocated to the Function
How to calculate the cost of Single Lambda?
You can use the following Cloud Watch Log Insight query to calculate the cost
parse @message /Duration:\s*(?<@duration_ms>\d+\.\d+)\s*ms\s*Billed\s*Duration:\s*(?<@billed_duration_ms>\d+)\s*ms\s*Memory\s*Size:\s*(?<@memory_size_mb>\d+)\s*MB/ | filter @message like /REPORT RequestId/ | stats sum(@billed_duration_ms * @memory_size_mb * 1.6279296875e-11 + 2.0e-7) as @cost_dollars_total
Let's decode it
Every Single Lambda Function invocation log would contain a log similar to the following containing the following information
- Request ID
- Billed Duration
- Memory Size
- Max Memory Used
REPORT RequestId: 960e6de1-beb3-5234-adcd-318694aae239 Duration: 74.30 ms Billed Duration: 75 ms Memory Size: 1024 MB Max Memory Used: 132 MB
We are basically filtering this log entry from the Lambda Function logs and Parse it to make some meaningful data.
Finally, we are going to do the math with the following formula
stats sum(@billed_duration_ms * @memory_size_mb * 1.6279296875e-11 + 2.0e-7) as @cost_dollars_total
billed duration milliseconds multiplied by memory size in MB
further multiplied by
1.6279296875e-11 + 2.0e-7
This is not a magic number, It is derived from the cost model and the numbers set by AWS itself
You can refer the following screen shot or directly from this page
1.6279296875e-11 is derived from the following formula for the Duration
$0.00001667 for every GB-second / 1024 / 1000 = $1.6279296875e-11 for every MB-millisecond.
and the other number 2.0e-7 is an invocation cost, Calculated as follows
0.20 / 1million = 2.0e-7
that brings us to the our final calculation and validation and this is how the result would look like for a single Lambda
You can use the cloud watch insight query given to calculate the cost of lambda function. While we only focus on only the Duration and the invocation there might be a slight addition to this cost based on the storage allocated.
You can also use cost explorer to get the overall Lambda Usage
Hope this article helps you understand the billing model and the cost calculation logic of Lambda.
Feel free to share if you have any better options or ideas to get this done.
Signup for Exclusive "Subscriber-only" Content