使用 EBS direct API 访问 EBS 快照的内容 - Amazon EBS

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

使用 EBS direct API 访问 EBS 快照的内容

您可以使用 Amazon Elastic Block Store(Amazon EBS)直接 API 创建 EBS 快照,将数据直接写入快照,读取快照上的数据,并标识两个快照之间的差异或发生的更改。如果您是为 Amazon EBS 提供备份服务的独立软件供应商(ISV),则利用 EBS direct API,可以更高效、更具成本效益地通过快照跟踪 EBS 卷上的增量更改。无需从快照创建新卷,然后使用 Amazon Elastic Compute Cloud(Amazon EC2)实例来比较差异,即可完成此操作。

您可以从本地数据直接创建增量快照到 EBS 卷和云中,以用于快速灾难恢复。通过写入和读取快照的功能,您可以在发生灾难时将本地数据写入 EBS 快照。然后,恢复后,您可以将其恢复到快照 AWS 或从快照恢复到本地。您不再需要构建和维护复杂的机制来将数据复制到 Amazon EBS 或从中复制数据。

本用户指南概述了构成 EBS direct API 的元素,并提供了如何有效使用这些元素的示例。有关 API 的操作、数据类型、参数和错误的更多信息,请参阅 EBS direct API 参考。有关 EBS 直接 API 支持的 AWS 区域、终端节点和服务配额的更多信息,请参阅中的 Amazon EBS 终端节点和配额AWS 一般参考

了解 EBS direct API

下面是您在开始使用 EBS direct API 前应了解的关键元素。

快照

快照是备份 EBS 卷中的数据的主要方式。使用 EBS direct API,您还可以将数据从本地磁盘备份到快照。为节省存储成本,连续快照为增量快照,只包含自上一个快照以来更改的卷数据。有关更多信息,请参阅 Amazon EBS 快照

注意

EBS 直接 API 不支持 Outposts 上的公有快照和本地快照。

数据块

数据块是快照中的数据片段。每个快照可以包含数千个数据块。快照中的所有数据块都具有固定大小。

数据块索引

数据块索引是以 512 KiB 数据块为单位的逻辑索引。若要确定数据块索引,请用逻辑卷中数据的逻辑偏移量除以数据块大小(数据的逻辑偏移量/524288)。数据的逻辑偏移量必须与 512 KiB 一致。

数据块令牌

数据块令牌是快照中的数据块的标识哈希,它用于查找数据块数据。EBS direct API 返回的数据块令牌是临时的。它们会在为其指定的到期时间戳时发生变化,或者如果您运行另一个快照 ListSnapshotBlocks 或 ListChangedBlocks 请求相同的快照。

校验和

校验和是从数据块中派生的大小很小的基准值,用于检测其传输或存储过程中引入的错误。EBS direct API 使用校验和验证数据完整性。从 EBS 快照读取数据时,该服务会为传输的每个数据块提供 Base64 编码的 SHA256 校验和,您可以使用这些校验和进行验证。向 EBS 快照写入数据时,您必须为传输的每个数据块提供一个 Base64 编码的 SHA256 校验和。服务使用提供的校验和验证接收的数据。有关更多信息,请参阅本指南下文中的使用校验和

加密

通过加密,您的数据将转换为无法读取的代码,只能由有权访问加密数据所用 KMS 密钥 的人员破译这些代码,从而为数据提供保护。您可以使用 EBS direct API 读取和写入加密快照,但存在一些限制。有关更多信息,请参阅本指南下文中的使用加密

API 操作

EBS direct API 由六个操作组成。包含三个读取操作和三个写入操作。读取操作包括:

  • ListSnapshotBlocks— 返回指定快照中区块的区块索引和区块标记

  • ListChangedBlocks— 返回同一卷和快照谱系的两个指定快照之间存在差异的区块索引和区块令牌。

  • GetSnapshotBlock— 返回区块中指定快照 ID、区块索引和区块令牌的数据。

写入操作包括:

  • StartSnapshot— 启动快照,可以是现有快照的增量快照,也可以是新快照。在使用 CompleteSnapshot 操作完成之前,已启动的快照将保持待处理状态。

  • PutSnapshotBlock— 以单个块的形式向已启动的快照添加数据。您必须为传输的数据块指定一个 Base64 编码的 SHA256 校验和。该服务会在传输完成以后验证校验和。若该服务计算的校验和与您指定值的不匹配,请求将会失败。

  • CompleteSnapshot— 完成处于待处理状态的已启动快照。然后,该快照的状态会更改为“已完成”。

EBS 直接 API 的定价

API 的定价

您为使用 EBS direct API 支付的费用取决于您发出的请求数。有关更多信息,请参阅 Amazon EBS 定价

  • ListChangedBlocks并且 ListSnapshotBlocks API 按请求收费。例如,如果您在某个地区发出 100,000 ListSnapshotBlocks 个 API 请求,且该地区每 1,000 个请求收费 0.0006 美元,则将向您收取 0.06 美元的费用(每 1,000 个请求 0.0006 美元 x 100)。

  • GetSnapshotBlock按返回的区块收费。例如,如果您在某个地区发出 100,000 GetSnapshotBlock 个 API 请求,且每返回 1,000 个区块收费 0.003 美元,则将支付 0.30 美元(每返回 1,000 个区块 0.003 美元 x 100)。

  • PutSnapshotBlock按写入的区块收费。例如,如果您在某个区域发出 100,000 PutSnapshotBlock 个 API 请求,且每写入 1,000 个区块收费 0.006 美元,则将支付 0.60 美元的费用(每写入 1,000 个区块 0.006 美元 x 100)。

联网成本

数据传输成本

使用非 FIP S 终端节点时,直接在 EBS 直接 API 和同一 AWS 区域的 Amazon EC2 实例之间传输的数据是免费的。有关更多信息,请参阅AWS 服务端点。如果您的数据传输途中还有其他 AWS 服务,则将向您收取相关的数据处理费用。这些服务包括但不限于 PrivateLink 终端节点、NAT 网关和 Transit Gateway。

VPC 接口终端节点

如果您使用来自 Amazon EC2 实例的 EBS 直接 API 或私有子网中的 AWS Lambda 函数,则可以使用 VPC 接口终端节点,而不使用 NAT 网关,以降低网络数据传输成本。有关更多信息,请参阅 将接口 VPC 终端节点与 EBS 直接 API 结合使用