SCF is pay-as-you-go hourly in USD based on your actual usage. An SCF bill consists of the following four parts (each part is billed according to its statistics and calculation method, and the fees are accurate to two decimal places in USD).
For the unit prices of resource usage, invocations, public network outbound traffic, and idle provisioned concurrency, please see Pricing. Here, the public network outbound traffic is calculated in GB. For more information, please see the "Bill-by-traffic" section in Network Traffic Billing.
SCF fees will be incurred by the actual loading and execution of the function code. If the function code is not actually executed, no fees will be incurred unless provisioned concurrency is configured. Below is an example:
|Scenario||Function Execution Status||Calculated||Billed|
|A request error occurs due to an incorrect parameter, incorrect function name, or non-existent function.||Not executed||No||No|
|An error occurs due to function execution timeout or function execution memory overrun.||Executed||Yes||Yes|
|An error occurs due to a function code problem.||Executed||Yes||Yes|
|A request error occurs due to concurrency overrun.||Not executed||No||No|
Resource usage fees = (resource usage - free tier) * resource usage unit price
Resource usage = configured function memory size * execution duration
Resource usage is calculated by multiplying the configured function memory size by the billable function execution duration. Here, the configured memory size is in GB, and the billable duration is converted from milliseconds to seconds. Therefore, the resource usage is in GBs (GB-second).
For example, if a function with 256 MB memory configured is executed for 1,760 ms, then the billable duration is 1,760 ms, and the resource usage of this function execution will be (256/1024) * (1760/1000) = 0.44 GBs.
Resource usage will be calculated for each function execution and aggregated in each hour as the hourly resource usage.
- Currently, SCF resource usage is calculated by multiplying the configured function memory size by the actually triggered execution duration of the function. Compared with the billing method of 100-ms upward aggregation, this billing method calculates lower overall resource usage and incurs fewer fees. For more information, please see Billing Example.
- Due to issues such as the uncertainty of computing resources where SCF runs, specific actions in the code, and relevant network communications, the execution duration of the same function code may vary slightly when the code is triggered at different times.
Invocation fees = (number of function invocations - free tier) * invocation unit price
Each function triggering and execution will be calculated as an invocation and aggregated in each hour as the hourly invocation volume. Fees will be charged per 10,000 invocations.
Public network outbound traffic fees = public outbound traffic * traffic unit price
Outbound traffic will be generated when resources are accessed over the public network in a function, such as uploading a file to an external storage space:
Idle provisioned concurrency fees = number of idle instances * configured memory size * idle duration * idle provisioned concurrency unit price
The provisioned concurrency feature only charges small idle fees for the instances that have been configured and started but are not in use, while no additional fees are charged for the instances that have been configured and are in use. In other words, only when the number of provisioned instances is greater than the number of concurrent instances for the current version will idle fees be incurred. Idle concurrency is calculated in GBs (GB-second).
SCF counts the maximum concurrency of a version at a 10-second granularity. The number of idle instances is calculated by subtracting the maximum concurrency from the number of currently started provisioned instances, and the idle fees are calculated by multiplying the number of idle instances by the configured version memory size and by the idle duration. The shaded part in the figure below indicates the idle provisioned concurrency.
Number of idle instances = max(number of started provisioned instances - number of concurrent instances, 0)
Idle instance fees = number of idle instances * configured memory size * idle duration * idle provisioned concurrency unit price
For example, if a function version with 128 MB memory has a provisioned concurrency quota of 12,800 MB (10 instances) and it has 8 concurrent instances in 10 seconds, then the number of idle instances is max(10 - 8, 0) = 2, and the idle instance fees are 2 * 128 MB * 10s * 0.00000847 USD/GBs = 0.00002118 USD.
If you use other services such as CMQ, CKafka, API Gateway, and COS when using SCF, fees will be calculated according to the billing rules of the actually used services.