以编程方式计算AWS快照使用成本

时间:2019-01-03 21:50:30

标签: amazon-web-services amazon-s3 amazon-ec2 aws-sdk

我打算使用脚本来计算快照使用成本。

根据文档,如果我们具有GB月份的值,则可以据此计算成本。有什么方法可以计算快照大小及其使用期限?我找不到任何方法来获取快照大小。当我描述快照时,确实在snapshotInfo中获得了volume-size,但我不认为这是快照的大小。此外,快照的年龄未在说明中定义。输出中仅包含启动快照时的时间戳。

我不希望所有快照都花钱。我将基于自定义标签过滤快照。我看到了https://aws.amazon.com/blogs/aws/new-cost-allocation-for-ebs-snapshots/,但这是通过UI进行的,需要特殊权限。

1 个答案:

答案 0 :(得分:1)

成本和使用情况报告是捕获此信息的唯一方法。无法通过服务API进行访问。

从逻辑上讲,EBS快照的大小与源卷的大小相同,因为每个EBS快照都包含对该卷上每个块的存储表示形式的引用。

但这只是一个引用(一个指针),因为EBS不在快照本身内部存储实际的数据块。它维护一个映射,并能够确定每个快照之间哪些块未更改,从而不会冗余地存储它们。

您为给定快照支付的价格直接取决于该快照中与仍然存在的相同卷的最新的先前快照中的块数量不同。删除较旧的快照将保留还原较新快照所需的任何块,从而将这些块的成本前滚至仍存在的快照中,并且在删除任何较旧的快照后,成本会转移到仍需要这些块的最旧快照。

因此,由于删除了相同卷的先前快照,给定快照的成本也会发生变化。

也:

  

只有快照启动的时间戳记在输出中。

那是年龄。快照是快照-快照启动时的磁盘映像。无论快照运行多长时间,捕获的数据都是启动快照时卷中存在的数据。