拆分成本分配数据的示例 - Amazon 成本和使用情况报告
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

拆分成本分配数据的示例

以下示例的目的是向您展示如何通过计算在集群上运行的单个 ECS 服务和任务的成本来计算分摊成本分配数据。请注意,整个示例中使用的费率仅用于说明目的。

您在一小时内使用了以下用量:

  • 具有两个服务和四个任务的单实例 (m5.xlarge) 共享集群,运行时间为整整一小时。

  • 实例配置为 4 个 vCPU 和 16 GB 内存。

  • 实例的摊销成本为 1 美元/小时。

拆分成本分配数据根据 9:1 的比率使用 CPU 和内存的相对单位权重。这是根据每小时 vCPU 和每 GB 每小时的价格得出的。Amazon Fargate

步骤 1:计算 CPU 和内存的单位成本

Unit-cost-per-resource = Hourly-instance-cost/((Memory-weight * Memory-available) + (CPU-weight * CPU-available))

= $1/ (1 * 16GB) + (9 * 4vCPU)) = 0.02 美元

Cost-per-vCPU-hour = CPU-weight * Unit-cost-per-resource

= 9 * 0.02 美元 = 0.17 美元

Cost-per-GB-hour = Memory-weight * Unit-cost-per-resource

= 1 * 0.02 美元 = 0.02 美元

Instance Instance type vCPU-available Memory-available Amortized-cost-per-hour Cost-per-vCPU-hour Cost-per-GB-hour
Instance1 m5.xlarge 4 16 $1 0.17 美元 0.02 美元

步骤 2:计算分配的容量和实例未使用的容量

  • 分配的容量:从父 EC2 实例分配给 ECS 任务的内存和 vCPU,定义为已用容量和预留容量的最大值。

    注意

    如果内存或 vCPU 使用率数据不可用,则将改用预留数据。有关更多信息,请参阅 Amazon ECS 使用情况报告

  • 实例未使用容量:vCPU 和内存的未使用容量。

Task1-Allocated-vCPU = Max (1 vCPU, 0.1 vCPU)= 1 vCPU

Task1-Allocated-memory = Max (4 GB, 3 GB)= 4 GB

Instance-Unused-vCPU = Max (CPU-available - SUM(Allocated-vCPU), 0)= Max (4 — 4.9,0) = 0

Instance-Unused-memory = Max (Memory-available - SUM(Allocated-memory), 0)= 最大 (16 — 14, 0) = 2 GB

在此示例中,该实例的 CPU 超过了订阅,这归因于 Task2 使用的 vCPU 多于预留的 vCPU。

Task name Service Reserved-vCPU Used-vCPU Allocated-vCPU Reserved-memory Used-memory Allocated-memory
Task1 Service1 1 0.1 1 4 3 4
Task2 Service2 1 1.9 1.9 4 6 6
Task3 Service1 1 0.5 1 2 2 2
Task4 Service2 1 0.5 1 2 2 2
Unused Unused 0 2
4.9 16

步骤 3:计算拆分使用率

  • 分割使用率:ECS 任务使用的 CPU 或内存与 EC2 实例上可用总体 CPU 或内存的百分比。

  • 未使用比率:ECS 任务使用的 CPU 或内存与 EC2 实例上使用的总体 CPU 或内存的百分比(即,不考虑实例上未使用的 CPU 或内存)。

Task1-vCPU-split-usage-ratio = Allocated-vCPU / Total-vCPU

= 1 vCPU /4.9vCPU = 0.204

Task1-Memory-split-usage-ratio = Allocated-GB / Total-GB

= 4 GB/ 16GB = 0.250

Task1-vCPU-unused-ratio = Task1-vCPU-split-usage-ratio / (Total-CPU-split-usage-ratio – Instance-unused-CPU)(如果实例未使用的 CPU 为 0,则设置为 0)

= 0(因为实例未使用的 CPU 为 0)

Task1-Memory-unused-ratio = Task1-Memory-split-usage-ratio / (Total-Memory-split-usage-ratio – Instance-unused-memory)(如果 I 为 0,则设置nstance-unused-memory为 0)

= 0.250/(1-0.125) = 0.286

Task name Service vCPU-split-usage-ratio vCPU-unused-ratio Memory-split-usage-ratio Memory-unused-ratio
Task1 Service1 0.204 0 0.250 0.286
Task2 Service2 0.388 0 0.375 0.429
Task3 Service1 0.204 0 0.125 0.143
Task4 Service2 0.204 0 0.125 0.143
Unused Unused 0 0.125
1 1

步骤 4:计算拆分成本和未使用成本

  • 分摊成本:根据 ECS 任务分配的 CPU 和内存使用情况对 EC2 实例成本进行按使用量付费的成本分配。

  • 未使用的实例成本:实例上未使用的 CPU 或内存资源的成本。

Task1-Split-cost = (Task1-vCPU-split-usage-ratio * vCPU-available * Cost-per-vCPU-hour) + (Task1-Memory-split-usage-ratio * Memory-available * Cost-per-GB-hour)

= (0.204 * 4 vCPU * 0.17 美元) + (0.25 * 16GB * 0.02 美元) = 0.22 美元

Task1-Unused-cost = (Task1-vCPU-unused-ratio * Instance-vCPU-unused-ratio * vCPU-available * Cost-per-VCPU-hour) + (Task1-Memory-unused-ratio * Instance-Memory-unused ratio * Memory-available * Cost-per-GB-hour)

= (0 * 0 * 4 * 0.17 美元) + (0.286 * 0.125 * 16 * 0.02) = 0.01 美元

Task1-Total-split-cost = Task1-Split-cost + Task1-Unused-cost

= 0.23 美元

Task name Service Split-cost Unused-cost Total-split-cost
Task1 Service1 0.22 美元 0.01 美元 0.23 美元
Task2 Service2 0.38 美元 0.02 美元 0.40 美元
Task3 Service1 0.18 美元 0.01 美元 0.19 美元
Task4 Service2 0.18 美元 0.01 美元 0.19 美元
Unused Unused 0.04 美元
$1 0.04 美元 $1

服务成本是与每项服务相关的任务成本的总和。

服务总成本 1 = 0.23 美元 + 0.19 美元 = 0.42 美元

Service2 的总成本 = 0.40 美元 + 0.19 美元 = 0.59 美元

AmazonCUR 示例

如果您有一个 EC2 实例以按需费率运行,则该实例的成本是使用计算的lineItem/UnblendedCost。