如何估算用于AWS ECR中泊坞窗图像的存储和stream量?

我正在尝试使用AWS ECR的每月成本。 它将包括:传出stream量成本(下载图像)和存储成本(在ECR中存储图像)。

我们假设:

  • 我们正在使用Mono构build一些Web服务(基础docker图像大小为500Mb);
  • 我们的CI&CD服务器每月build立并推送图像到ECR 300次。 为简单起见,旧图像未被移除;
  • 我们的编译代码在基本映像中增加了40Mb的附加层;
  • 我们每个月从AWS下载图片60次;

第一个问题是: 如何估算每月存储量 ? 什么方程是正确的?

Monthly_Vol_1 = 500 + 40 * 300; – 基础图像只存储一次

Monthly_Vol_2 =(500 + 40)* 300; – 每个图像都包含基本图像

第二个问题是: 如何估算来自AWS的每月stream量? 假设主机下载映像不会删除现有数据。

Monthly_Traf_1 =(500 + 40)* 60; – 每次下载基础图像和附加图层

Monthly_Traf_2 = 500 + 40 * 60; – 仅对第一张图像下载基本图像。 只有应用程序更新被下载

Monthly_Traf_3 = 40 * 60; – 基础映像不是从AWS ECR下载的,而是从Docker集线器下载的

更新:

我在9月份上传了2张图片到AWS ECR,并在2个月后查看了账单信息。 我发现:

每月只需​​花费0.04美元就可以存储2张图片(无需转账)。 根据AWS ECR定价(每1Gb存储0.10美元),看起来亚马逊存储400Mb的数据。 我在AWS ECS仪表板中看到了相同的400Mb。

我试图理解和计算存储的数据(使用docker imagedocker history命令),但是失败了。

我有2个docker图片上传到AWS ECR:

  1. 基于单声道 (409Mb)的SVC (482Mb)
  2. 基于节点 (634Mb)的WEB (679Mb)

如果AWS存储完整的图像,那么它将存储482 + 679 = 1161Mb

如果AWS存储刚刚添加的图层,则应存储45 + 73 = 118Mb

AWS如何计算400Mb? O_O

UPDATE2:

看起来像AWS存储完整的图像,但压缩(400Mb而不是1161Mb)。 根据http://docs.aws.amazon.com/AmazonECR/latest/APIReference/API_DescribeImages.html

从Docker版本1.9开始,Docker客户端在将其推送到V2 Dockerregistry之前压缩图像层。 docker images命令的输出显示未压缩的图像大小,因此可能会返回比DescribeImages返回的图像大小更大的图像大小。