使用 EBS Direct 讀取 Amazon EBS快照 APIs - Amazon EBS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 EBS Direct 讀取 Amazon EBS快照 APIs

下列步驟說明如何使用 EBS 直接APIs讀取快照:

  1. 使用 ListSnapshotBlocks 動作來檢視快照中所有區塊索引和區塊權杖。或使用 ListChangedBlocks 動作來僅檢視相同磁碟區和快照譜系的兩個快照之間不同之區塊的區塊索引和區塊權杖。這些動作可協助您識別您可能想要取得資料的區塊標記和區塊索引。

  2. 使用 GetSnapshotBlock 動作,並指定您要取得資料的區塊的區塊索引和區塊權杖。

注意

您無法EBS直接APIs搭配封存的快照使用 。

下列範例示範如何使用EBS直接 讀取快照APIs。

列出快照中的區塊

AWS 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 }
AWS API

下列ListSnapshotBlocks範例請求會傳回快照 中區塊的區塊索引和區塊權杖snap-0acEXAMPLEcf41648startingBlockIndex 參數會將結果限制為封鎖大於 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 陣列。例如:

    • 快照 1:區塊索引編號 0 - 999 的 1000 個區塊的完整快照。

    • 快照 2:僅包含一個變更區塊 (區塊索引編號 999) 的增量快照。

    列出這些具有 StartingBlockIndex = 0MaxResults = 100 之快照的變更區塊會傳回 ChangedBlocks 的空陣列。您必須使用 nextToken 要求剩餘結果,直到在第十個結果集中傳回變更區塊,結果集會包括區塊索引編號 900 - 999 的區塊。

  • 回應可以略過快照中未寫入的區塊。例如:

    • 快照 1:區塊索引編號 2000 - 2999 的 1000 個區塊的完整快照。

    • 快照 2:僅包含一個變更區塊 (區塊索引編號 2000) 的增量快照。

    列出這些具有 StartingBlockIndex = 0MaxResults = 100 之快照的變更區塊時,回應會略過索引編號 0 - 1999 的區塊,並且包括索引編號 2000 的區塊。回應將不會包含空 ChangedBlocks 陣列。

AWS 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" }
AWS API

下列ListChangedBlocks範例請求會傳回快照與 之間不同之區塊的區塊索引snap-0acEXAMPLEcf41648和區塊權杖snap-0c9EXAMPLE1b30e2fstartingBlockIndex 參數會將結果限制為封鎖大於 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, 30726002、和 6003 在兩個快照之間不同。此外,區塊索引 60026003 只存在於指定的第一個快照 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 }

從快照取得區塊資料

AWS CLI

下列get-snapshot-block範例命令會在快照 中傳回區塊索引中的資料AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR6001其中包含區塊權杖 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" }
AWS API

下列GetSnapshotBlock範例請求會在快照 中傳回區塊索引中的資料AAUBARGCaufCqBRZC8tEkPYGGkSv3vqvOjJ2xKDi3ljDFiytUxBLXYgTmkid3072其中包含區塊權杖 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