Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅
中国的 Amazon Web Services 服务入门
(PDF)。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 EBS 直接 API 读取快照
以下步骤介绍了如何使用 EBS direct API 读取快照:
-
使用 ListSnapshotBlocks 操作可查看快照中区块的所有区块索引和区块标记。或者使用该 ListChangedBlocks 操作仅查看同一卷的两个快照和快照谱系之间不同的区块索引和区块令牌。这些操作可帮助您标识可能希望获取其数据的数据块的数据块令牌和数据块索引。
-
使用 GetSnapshotBlock 操作,并指定要获取其数据的区块的区块索引和区块标记。
以下示例显示如何使用 EBS 直接 API 读取快照。
列出快照中的数据块
- Amazon CLI
-
以下list-snapshot-blocks示例命令返回快照中区块的区块索引和区块标记snap-0987654321
。--starting-block-index
参数将结果限制为索引大于 1000
的数据块,并且 --max-results
参数将结果限制为前 100
个数据块。
aws ebs list-snapshot-blocks --snapshot-id snap-0987654321
--starting-block-index 1000
--max-results 100
以下为上一个命令的示例响应,其中列出了快照中的数据块索引和数据块令牌。使用 get-snapshot-block
命令,请指定要获取其数据的数据块的数据块索引和数据块令牌。数据块令牌在列出的过期时间之前有效。
{
"Blocks": [
{
"BlockIndex": 1001,
"BlockToken": "AAABAV3/PNhXOynVdMYHUpPsetaSvjLB1dtIGfbJv5OJ0sX855EzGTWos4a4"
},
{
"BlockIndex": 1002,
"BlockToken": "AAABATGQIgwr0WwIuqIMjCA/Sy7e/YoQFZsHejzGNvjKauzNgzeI13YHBfQB"
},
{
"BlockIndex": 1007,
"BlockToken": "AAABAZ9CTuQtUvp/dXqRWw4d07eOgTZ3jvn6hiW30W9duM8MiMw6yQayzF2c"
},
{
"BlockIndex": 1012,
"BlockToken": "AAABAQdzxhw0rVV6PNmsfo/YRIxo9JPR85XxPf1BLjg0Hec6pygYr6laE1p0"
},
{
"BlockIndex": 1030,
"BlockToken": "AAABAaYvPax6mv+iGWLdTUjQtFWouQ7Dqz6nSD9L+CbXnvpkswA6iDID523d"
},
{
"BlockIndex": 1031,
"BlockToken": "AAABATgWZC0XcFwUKvTJbUXMiSPg59KVxJGL+BWBClkw6spzCxJVqDVaTskJ"
},
...
],
"ExpiryTime": 1576287332.806,
"VolumeSize": 32212254720,
"BlockSize": 524288
}
- Amazon API
-
以下ListSnapshotBlocks示例请求返回快照中区块的区块索引和区块标记snap-0acEXAMPLEcf41648
。startingBlockIndex
参数将结果限制为索引大于 1000
的数据块,并且 maxResults
参数将结果限制为前 100
个数据块。
GET /snapshots/snap-0acEXAMPLEcf41648
/blocks?maxResults=100
&startingBlockIndex=1000
HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
User-Agent: <User agent parameter>
X-Amz-Date: 20200617T231953Z
Authorization: <Authentication parameter>
以下为上一个请求的示例响应,其中列出了快照中的数据块索引和数据块令牌。使用 GetSnapshotBlock 操作并指定要获取其数据的区块的区块索引和区块标记。数据块令牌在列出的过期时间之前有效。
HTTP/1.1 200 OK
x-amzn-RequestId: d6e5017c-70a8-4539-8830-57f5557f3f27
Content-Type: application/json
Content-Length: 2472
Date: Wed, 17 Jun 2020 23:19:56 GMT
Connection: keep-alive
{
"BlockSize": 524288,
"Blocks": [
{
"BlockIndex": 0,
"BlockToken": "AAUBAcuWqOCnDNuKle11s7IIX6jp6FYcC/q8oT93913HhvLvA+3JRrSybp/0"
},
{
"BlockIndex": 1536,
"BlockToken": "AAUBAWudwfmofcrQhGVlLwuRKm2b8ZXPiyrgoykTRC6IU1NbxKWDY1pPjvnV"
},
{
"BlockIndex": 3072,
"BlockToken": "AAUBAV7p6pC5fKAC7TokoNCtAnZhqq27u6YEXZ3MwRevBkDjmMx6iuA6tsBt"
},
{
"BlockIndex": 3073,
"BlockToken": "AAUBAbqt9zpqBUEvtO2HINAfFaWToOwlPjbIsQOlx6JUN/0+iMQl0NtNbnX4"
},
...
],
"ExpiryTime": 1.59298379649E9,
"VolumeSize": 3
}
列出两个快照之间存在不同的数据块
在发出分页请求以列出两个快照之间发生更改的块时应注意以下几点:
-
响应可能包含一个或多个空的 ChangedBlocks
数组。例如:
使用 StartingBlockIndex = 0
和 MaxResults = 100
列出这些快照发生更改的块时,将返回一个空的 ChangedBlocks
数组。您必须使用 nextToken
请求剩余的结果,直到第十个结果集(其中包括块索引为 900
- 999
的块)返回发生更改的块为止。
-
响应可能回跳过快照中未写入的块。例如:
使用 StartingBlockIndex = 0
和 MaxResults = 100
列出这些快照中发生更改的块时,响应将跳过块索引 0
- 1999
并将包含块索引 2000
。响应不会包含空的 ChangedBlocks
数组。
- Amazon CLI
-
以下list-changed-blocks示例命令返回快照和之间不同的区块的区块索引snap-1234567890
和区块标记snap-0987654321
。--starting-block-index
参数将结果限制为索引大于 0
的数据块,并且 --max-results
参数将结果限制为前 500
个数据块。
aws ebs list-changed-blocks --first-snapshot-id snap-1234567890
--second-snapshot-id snap-0987654321
--starting-block-index 0
--max-results 500
以下为上一个命令的示例响应,其中显示了两个快照的数据块索引 0、6000、6001、6002 和 6003 存在不同。此外,数据块索引 6001、6002 和 6003 仅存在于指定的第一个快照 ID 中,而不存在于第二个快照 ID 中,因为响应中没有列出第二个数据块令牌。
使用 get-snapshot-block
命令,请指定要获取其数据的数据块的数据块索引和数据块令牌。数据块令牌在列出的过期时间之前有效。
{
"ChangedBlocks": [
{
"BlockIndex": 0,
"FirstBlockToken": "AAABAVahm9SO60Dyi0ORySzn2ZjGjW/KN3uygGlS0QOYWesbzBbDnX2dGpmC",
"SecondBlockToken": "AAABAf8o0o6UFi1rDbSZGIRaCEdDyBu9TlvtCQxxoKV8qrUPQP7vcM6iWGSr"
},
{
"BlockIndex": 6000,
"FirstBlockToken": "AAABAbYSiZvJ0/R9tz8suI8dSzecLjN4kkazK8inFXVintPkdaVFLfCMQsKe",
"SecondBlockToken": "AAABAZnqTdzFmKRpsaMAsDxviVqEI/3jJzI2crq2eFDCgHmyNf777elD9oVR"
},
{
"BlockIndex": 6001,
"FirstBlockToken": "AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR"
},
{
"BlockIndex": 6002,
"FirstBlockToken": "AAABASqX4/NWjvNceoyMUljcRd0DnwbSwNnes1UkoP62CrQXvn47BY5435aw"
},
{
"BlockIndex": 6003,
"FirstBlockToken": "AAABASmJ0O5JxAOce25rF4P1sdRtyIDsX12tFEDunnePYUKOf4PBROuICb2A"
},
...
],
"ExpiryTime": 1576308931.973,
"VolumeSize": 32212254720,
"BlockSize": 524288,
"NextToken": "AAADARqElNng/sV98CYk/bJDCXeLJmLJHnNSkHvLzVaO0zsPH/QM3Bi3zF//O6Mdi/BbJarBnp8h"
}
- Amazon API
-
以下ListChangedBlocks示例请求返回快照和之间不同的区块的区块索引snap-0acEXAMPLEcf41648
和区块标记snap-0c9EXAMPLE1b30e2f
。startingBlockIndex
参数将结果限制为索引大于 0
的数据块,并且 maxResults
参数将结果限制为前 500
个数据块。
GET /snapshots/snap-0c9EXAMPLE1b30e2f
/changedblocks?firstSnapshotId=snap-0acEXAMPLEcf41648
&maxResults=500
&startingBlockIndex=0
HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
User-Agent: <User agent parameter>
X-Amz-Date: 20200617T232546Z
Authorization: <Authentication parameter>
以下为上一个请求的示例响应,其中显示了两个快照的数据块索引 0
、3072
、6002
和 6003
存在不同。此外,数据块索引 6002
和 6003
仅存在于指定的第一个快照 ID 中,而不存在于第二个快照 ID 中,因为响应中没有列出第二个数据块令牌。
使用 GetSnapshotBlock
操作,请指定要获取其数据的数据块的数据块索引和数据块令牌。数据块令牌在列出的过期时间之前有效。
HTTP/1.1 200 OK
x-amzn-RequestId: fb0f6743-6d81-4be8-afbe-db11a5bb8a1f
Content-Type: application/json
Content-Length: 1456
Date: Wed, 17 Jun 2020 23:25:47 GMT
Connection: keep-alive
{
"BlockSize": 524288,
"ChangedBlocks": [
{
"BlockIndex": 0,
"FirstBlockToken": "AAUBAVaWqOCnDNuKle11s7IIX6jp6FYcC/tJuVT1GgP23AuLntwiMdJ+OJkL",
"SecondBlockToken": "AAUBASxzy0Y0b33JVRLoYm3NOresCxn5RO+HVFzXW3Y/RwfFaPX2Edx8QHCh"
},
{
"BlockIndex": 3072,
"FirstBlockToken": "AAUBAcHp6pC5fKAC7TokoNCtAnZhqq27u6fxRfZOLEmeXLmHBf2R/Yb24MaS",
"SecondBlockToken": "AAUBARGCaufCqBRZC8tEkPYGGkSv3vqvOjJ2xKDi3ljDFiytUxBLXYgTmkid"
},
{
"BlockIndex": 6002,
"FirstBlockToken": "AAABASqX4/NWjvNceoyMUljcRd0DnwbSwNnes1UkoP62CrQXvn47BY5435aw"
},
{
"BlockIndex": 6003,
"FirstBlockToken": "AAABASmJ0O5JxAOce25rF4P1sdRtyIDsX12tFEDunnePYUKOf4PBROuICb2A"
},
...
],
"ExpiryTime": 1.592976647009E9,
"VolumeSize": 3
}
从快照获取数据块数据
- Amazon CLI
-
以下get-snapshot-block示例命令以快照形式返回区块索引中6001
带有区块令牌AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR
的数据snap-1234567890
。在 Windows 计算机上,二进制数据将输出到 data
目录中的 C:\Temp
文件。如果您在 Linux 或 Unix 计算机上运行该命令,请将输出路径替换为 /tmp/data
以将数据输出到 data
目录中的 /tmp
文件。
aws ebs get-snapshot-block --snapshot-id snap-1234567890
--block-index 6001
--block-token AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR
C:/Temp/data
以下为上一个命令的示例响应,其中显示了返回的数据的大小、用于验证数据的校验和以及校验和的算法。二进制数据会自动保存到您在请求命令中指定的目录和文件中。
{
"DataLength": "524288",
"Checksum": "cf0Y6/Fn0oFa4VyjQPOa/iD0zhTflPTKzxGv2OKowXc=",
"ChecksumAlgorithm": "SHA256"
}
- Amazon API
-
以下GetSnapshotBlock示例请求以快照形式返回区块索引中3072
带有区块令牌AAUBARGCaufCqBRZC8tEkPYGGkSv3vqvOjJ2xKDi3ljDFiytUxBLXYgTmkid
的数据snap-0c9EXAMPLE1b30e2f
。
GET /snapshots/snap-0c9EXAMPLE1b30e2f
/blocks/3072
?blockToken=AAUBARGCaufCqBRZC8tEkPYGGkSv3vqvOjJ2xKDi3ljDFiytUxBLXYgTmkid
HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
User-Agent: <User agent parameter>
X-Amz-Date: 20200617T232838Z
Authorization: <Authentication parameter>
以下为上一个请求的示例响应,其中显示了返回的数据的大小、用于验证数据的校验和以及用于生成校验和的算法。二进制数据在响应正文中传输,如下例所BlockData
示。
HTTP/1.1 200 OK
x-amzn-RequestId: 2d0db2fb-bd88-474d-a137-81c4e57d7b9f
x-amz-Data-Length: 524288
x-amz-Checksum: Vc0yY2j3qg8bUL9I6GQuI2orTudrQRBDMIhcy7bdEsw=
x-amz-Checksum-Algorithm: SHA256
Content-Type: application/octet-stream
Content-Length: 524288
Date: Wed, 17 Jun 2020 23:28:38 GMT
Connection: keep-alive
BlockData