本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 EBS Direct 寫入 Amazon EBS快照 APIs
下列步驟說明如何使用 EBS 直接APIs寫入增量快照:
-
使用 StartSnapshot 動作並指定父項快照 ID 以啟動快照作為現有快照的增量快照,或省略父項快照 ID 以啟動新的快照。此動作會傳回新的快照 ID,此 ID 處於待定狀態。
-
使用 PutSnapshotBlock 動作並指定待處理快照的 ID,以個別區塊的形式將資料新增至該快照。您必須為傳輸的資料區塊指定 Base64-encodedSHA256檢查總和。服務會運算所接收資料的檢查總和,並使用您指定的檢查總和進行驗證。如果檢查總和不相符,該動作就會失敗。
-
當您完成將資料新增至待定快照時,請使用 CompleteSnapshot動作啟動非同步工作流程,以密封快照並將其移至已完成狀態。
重複這些步驟,以使用先前建立的快照做為父系快照來建立新的增量快照。
例如,在下圖中,快照 A 是第一個啟動的新快照。系統將快照 A 作為啟動快照 B 的父系快照。將快照 B 作為啟動和建立快照的父系快照 C。快照 A、B 和 C 是增量快照。快照 A 用於建立EBS磁碟區 1。快照 D 是從EBS磁碟區 1 建立。快照 D 是 A 的增量快照;它不是 B 或 C 的增量快照。
下列範例示範如何使用 EBS Direct 撰寫快照APIs。
啟動快照
- AWS CLI
-
下列 start-snapshot 範例命令會啟動
8
GiB 快照,並使用快照snap-123EXAMPLE1234567
做為父系快照。新快照將是父系快照的增量快照。如果在指定的60
分鐘逾時期間內沒有對快照提出放置或完成請求,則快照會移至錯誤狀態。550e8400-e29b-41d4-a716-446655440000
用戶端字符會確保請求的冪等性。如果省略用戶端權杖, AWS SDK會自動為您產生一個權杖。如需取得冪等性的詳細資訊,請參閱 確保請求中的 StartSnapshot API意識模糊。aws ebs start-snapshot --volume-size
8
--parent-snapshotsnap-123EXAMPLE1234567
--timeout60
--client-token550e8400-e29b-41d4-a716-446655440000
下列針對先前命令的回應範例顯示快照 ID、 AWS 帳戶 ID、狀態、以 GiB 為單位的磁碟區大小,以及快照中區塊的大小。快照會以
pending
狀態啟動。在後續put-snapshot-block
命令中指定快照 ID,將資料寫入快照,然後使用complete-snapshot
命令完成快照並將其狀態變更為completed
。{ "SnapshotId": "snap-0aaEXAMPLEe306d62", "OwnerId": "111122223333", "Status": "pending", "VolumeSize": 8, "BlockSize": 524288 }
- AWS API
-
下列StartSnapshot範例請求會啟動
8
GiB 快照,使用快照snap-123EXAMPLE1234567
作為父快照。新快照將是父系快照的增量快照。如果在指定的60
分鐘逾時期間內沒有對快照提出放置或完成請求,則快照會移至錯誤狀態。550e8400-e29b-41d4-a716-446655440000
用戶端字符會確保請求的冪等性。如果省略用戶端權杖, AWS SDK會自動為您產生一個權杖。如需取得冪等性的詳細資訊,請參閱 確保請求中的 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、 AWS 帳戶 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 }
將資料放入快照中
- AWS CLI
-
下列 put-snapshot 範例命令會寫入資料
524288
位元組來封鎖1000
快照上的索引snap-0aaEXAMPLEe306d62
。Base64 編碼的QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
檢查總和是使用SHA256
演算法產生的。傳輸的資料位於/tmp/data
檔案中。aws ebs put-snapshot-block --snapshot-id
snap-0aaEXAMPLEe306d62
--block-index1000
--data-length524288
--block-data/tmp/data
--checksumQOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
--checksum-algorithmSHA256
前一個命令的下列範例回應會針對服務接收的資料,確認資料長度、檢查總和演算法。
{ "DataLength": "524288", "Checksum": "QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=", "ChecksumAlgorithm": "SHA256" }
- AWS 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 {}
完成快照
- AWS CLI
-
下列 complete-snapshot 範例命令會完成快照
snap-0aaEXAMPLEe306d62
。該命令會指定5
區塊已寫入快照。6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=
檢查總和代表寫入快照的完整資料集的檢查總和。如需有關檢查總和的詳細資訊,請參閱本指南前述的 使用EBS直接總和APIs檢查碼來驗證快照資料。aws ebs complete-snapshot --snapshot-id
snap-0aaEXAMPLEe306d62
--changed-blocks-count5
--checksum6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=
--checksum-algorithmSHA256
--checksum-aggregation-methodLINEAR
以下是前一個命令的範例回應。
{ "Status": "pending" }
- AWS 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"}