Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 EBS 直接 API 写入快照
以下步骤介绍了如何使用 EBS direct API 写入增量快照:
-
使用 StartSnapshot 操作并指定父快照 ID,可以启动一个快照作为现有快照的增量快照,忽略父快照 ID 可启动新快照。此操作返回处于“待处理”状态的新快照 ID。
-
使用 PutSnapshotBlock 操作并指定待处理快照的 ID,以便以单个数据块的形式向其添加数据。您必须为传输的数据块指定一个 Base64 编码的 SHA256 校验和。服务将计算接收到的数据的校验和,并使用您指定的校验和对其进行验证。如果校验和不匹配,则操作失败。
-
当您完成将数据添加到待处理快照的操作后,使用 CompleteSnapshot 操作启动一个异步工作流,用于密封快照并将其移动到已完成状态。
重复这些步骤,使用之前创建的快照作为父级创建新的增量快照。
例如,在下图中,快照 A 是启动的第一个新快照。快照 A 用作父快照来启动快照 B。快照 B 用作父快照来启动和创建快照 C。快照 A、B 和 C 均为增量快照。快照 A 用于创建 EBS 卷 1。快照 D 创建自 EBS 卷 1。快照 D 是 A 的增量快照;它不是 B 或 C 的增量快照。
以下示例显示如何使用 EBS 直接 API 写入快照。
启动快照
- Amazon CLI
-
以下 start-snapshot 示例命令启动 8
GiB 快照,使用快照 snap-123EXAMPLE1234567
作为父快照。新快照将是父快照的增量快照。如果在指定的 60
分钟超时期限内,没有针对快照发出放置或完成请求,则快照将转为错误状态。550e8400-e29b-41d4-a716-446655440000
客户端令牌确保请求的幂等性。如果省略了客户端令牌,Amazon 开发工具包会自动为您生成一个。有关幂等性的更多信息,请参阅 StartSnapshot API 的幂等性。
aws ebs start-snapshot --volume-size 8
--parent-snapshot snap-123EXAMPLE1234567
--timeout 60
--client-token 550e8400-e29b-41d4-a716-446655440000
以下为上一个命令的示例响应,其中显示了快照 ID、Amazon 账户 ID、状态、卷大小(以 GiB 为单位)以及快照中数据块的大小。快照以 pending
状态启动。在后续 put-snapshot-block
命令中指定快照 ID 以将数据写入快照,然后使用 complete-snapshot
命令完成快照并将其状态更改为 completed
。
{
"SnapshotId": "snap-0aaEXAMPLEe306d62",
"OwnerId": "111122223333",
"Status": "pending",
"VolumeSize": 8,
"BlockSize": 524288
}
- Amazon API
-
以下 StartSnapshot 示例请求启动 8
GiB 快照,使用快照 snap-123EXAMPLE1234567
作为父快照。新快照将是父快照的增量快照。如果在指定的 60
分钟超时期限内,没有针对快照发出放置或完成请求,则快照将转为错误状态。550e8400-e29b-41d4-a716-446655440000
客户端令牌确保请求的幂等性。如果省略了客户端令牌,Amazon 开发工具包会自动为您生成一个。有关幂等性的更多信息,请参阅 StartSnapshot API 的幂等性。
POST /snapshots HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
User-Agent: <User agent parameter>
X-Amz-Date: 20200618T040724Z
Authorization: <Authentication parameter>
{
"VolumeSize": 8
,
"ParentSnapshot": snap-123EXAMPLE1234567
,
"ClientToken": "550e8400-e29b-41d4-a716-446655440000
",
"Timeout": 60
}
以下为上一个请求的示例响应,其中显示了快照 ID、Amazon 账户 ID、状态、卷大小(以 GiB 为单位)以及快照中数据块的大小。快照以“待处理”状态开始。在后续 PutSnapshotBlocks
请求中指定快照 ID,以将数据写入快照。
HTTP/1.1 201 Created
x-amzn-RequestId: 929e6eb9-7183-405a-9502-5b7da37c1b18
Content-Type: application/json
Content-Length: 181
Date: Thu, 18 Jun 2020 04:07:29 GMT
Connection: keep-alive
{
"BlockSize": 524288,
"Description": null,
"OwnerId": "138695307491",
"Progress": null,
"SnapshotId": "snap-052EXAMPLEc85d8dd",
"StartTime": null,
"Status": "pending",
"Tags": null,
"VolumeSize": 8
}
将数据放入快照
- Amazon CLI
-
以下 put-snapshot 示例命令将 524288
字节的数据写入快照 1000
上的数据块索引 snap-0aaEXAMPLEe306d62
。Base64 编码的 QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
校验和使用 SHA256
算法生成。传输的数据位于 /tmp/data
文件中。
aws ebs put-snapshot-block --snapshot-id snap-0aaEXAMPLEe306d62
--block-index 1000
--data-length 524288
--block-data /tmp/data
--checksum QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
--checksum-algorithm SHA256
以下为上一个命令的示例响应,其中确认服务接收的数据的数据长度、校验和以及校验和算法。
{
"DataLength": "524288",
"Checksum": "QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=",
"ChecksumAlgorithm": "SHA256"
}
- Amazon API
-
以下 PutSnapshot 示例请求将 524288
字节的数据写入快照 1000
上的数据块索引 snap-052EXAMPLEc85d8dd
。Base64 编码的 QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
校验和使用 SHA256
算法生成。数据在请求的正文中传输,并在以下示例中以 BlockData
表示。
PUT /snapshots/snap-052EXAMPLEc85d8dd
/blocks
/1000 HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
x-amz-Data-Length: 524288
x-amz-Checksum: QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
x-amz-Checksum-Algorithm: SHA256
User-Agent: <User agent parameter>
X-Amz-Date: 20200618T042215Z
X-Amz-Content-SHA256: UNSIGNED-PAYLOAD
Authorization: <Authentication parameter>
BlockData
以下为上一个请求的示例响应,其中确认服务接收的数据的数据长度、校验和以及校验和算法。
HTTP/1.1 201 Created
x-amzn-RequestId: 643ac797-7e0c-4ad0-8417-97b77b43c57b
x-amz-Checksum: QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
x-amz-Checksum-Algorithm: SHA256
Content-Type: application/json
Content-Length: 2
Date: Thu, 18 Jun 2020 04:22:12 GMT
Connection: keep-alive
{}
完成快照
- Amazon CLI
-
以下 complete-snapshot 示例命令完成快照 snap-0aaEXAMPLEe306d62
。该命令指定将 5
数据块写入快照。6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=
校验和表示写入快照的完整数据集的校验和。有关校验和的更多信息,请参阅本指南前文中的使用校验和。
aws ebs complete-snapshot --snapshot-id snap-0aaEXAMPLEe306d62
--changed-blocks-count 5
--checksum 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=
--checksum-algorithm SHA256
--checksum-aggregation-method LINEAR
以下为上一个命令的示例响应。
{
"Status": "pending"
}
- Amazon API
-
以下 CompleteSnapshot 示例请求完成快照 snap-052EXAMPLEc85d8dd
。该命令指定将 5
数据块写入快照。6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=
校验和表示写入快照的完整数据集的校验和。
POST /snapshots/completion/snap-052EXAMPLEc85d8dd
HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
x-amz-ChangedBlocksCount: 5
x-amz-Checksum: 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=
x-amz-Checksum-Algorithm: SHA256
x-amz-Checksum-Aggregation-Method: LINEAR
User-Agent: <User agent parameter>
X-Amz-Date: 20200618T043158Z
Authorization: <Authentication parameter>
以下为上一个请求的示例响应。
HTTP/1.1 202 Accepted
x-amzn-RequestId: 06cba5b5-b731-49de-af40-80333ac3a117
Content-Type: application/json
Content-Length: 20
Date: Thu, 18 Jun 2020 04:31:50 GMT
Connection: keep-alive
{"Status":"pending"}