使用 EBS direct API 访问 EBS 快照的内容 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

使用 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 快照。然后在灾难恢复后,您可以将其从快照恢复到 Amazon 或本地。您不再需要构建和维护复杂的机制来将数据复制到 Amazon EBS 或从中复制数据。

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

了解 EBS direct API

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

快照

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

注意

EBS direct API 不支持公有快照。

数据块

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

数据块索引

数据块索引是以 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 按每个请求收费。例如,如果您在每 1000 个请求收取 0.0006 USD 的区域发出 100,000 个 ListSnapshotBlocks API 请求,则将向您收取 0.06 USD(每 1000 个请求 0.0006 USD x 100)的费用。

  • GetSnapshotBlock 按返回的每个数据块收费。例如,如果您在针对每 1,000 个返回的数据块收取 0.003 USD 的区域发出 100,000 个 GetSnapshotBlock API 请求,则将向您收取 0.30 USD(每 1000 个返回的数据块 0.003 USD x 100)的费用。

  • PutSnapshotBlock 按每个写入的数据块收费。例如,如果您在针对每 1,000 个写入的数据块收取 0.006 USD 的区域发出 100,000 个 PutSnapshotBlock API 请求,则将向您收取 0.60 USD(每 1000 个写入的数据块 0.006 USD x 100)的费用。

联网成本

数据传输成本

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

VPC 接口终端节点

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