EBS direct を使用した Amazon EBSスナップショットの書き込み APIs - Amazon EBS

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

EBS direct を使用した Amazon EBSスナップショットの書き込み APIs

次の手順では、EBS直接 を使用して増分スナップショットAPIsを書き込む方法について説明します。

  1. StartSnapshot アクションを使用して、親スナップショット ID を指定して既存のスナップショットの増分スナップショットとしてスナップショットを開始するか、親スナップショット ID を省略して新しいスナップショットを開始します。このアクションは、保留状態にある新しいスナップショットの ID を返します。

  2. PutSnapshotBlock アクションを使用して、保留中のスナップショットの ID を指定し、個々のブロックの形式でデータを追加します。送信されるデータのブロックには Base64-encodedSHA256チェックサムを指定する必要があります。サービスは、受信したデータのチェックサムを計算し、指定したチェックサムと照合してデータを検証します。チェックサムが一致しない場合、アクションは失敗します。

  3. 保留中のスナップショットにデータを追加したら、 アクションを使用して CompleteSnapshot、スナップショットをシールして完了状態に移行する非同期ワークフローを開始します。

上記の手順を繰り返し、以前に作成したスナップショットを親とする新しい増分スナップショットを作成します。

例えば、次の図のスナップショット A は、最初に開始した新しいスナップショットです。スナップショット A を親スナップショットとしてスナップショット B を開始します。スナップショット B を親スナップショットとしてスナップショット C を開始および作成します。スナップショット A、B、C は、増分スナップショットです。スナップショット A は、EBSボリューム 1 を作成するために使用されます。スナップショット D はEBSボリューム 1 から作成されます。スナップショット D は A の増分スナップショットであり、B または C の増分スナップショットではありません。

EBS direct 増分スナップショットの作成APIsに使用されます。

次の例は、EBS直接 を使用してスナップショットを書き込む方法を示していますAPIs。

スナップショットの開始

AWS CLI

次の start-snapshot コマンドの例では、8 を親スナップショットとして使用し、snap-123EXAMPLE1234567 GiB スナップショットを開始します。新しいスナップショットは、親スナップショットの増分スナップショットになります。指定した 60 分のタイムアウト期間内にスナップショットに対する書き込みリクエストまたは完了リクエストが行われない場合、スナップショットはエラー状態に移行します。550e8400-e29b-41d4-a716-446655440000 クライアントトークンは、リクエストのべき等を保証します。クライアントトークンを省略すると、 AWS SDKによって自動的に生成されます。べき等の詳細については、リクエストの StartSnapshot API冪等性を確保するを参照してください。

aws ebs start-snapshot --volume-size 8 --parent-snapshot snap-123EXAMPLE1234567 --timeout 60 --client-token 550e8400-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例では、親スナップショットsnap-123EXAMPLE1234567としてスナップショットを使用して 8 GiB スナップショットを開始します。新しいスナップショットは、親スナップショットの増分スナップショットになります。指定した 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-index 1000 --data-length 524288 --block-data /tmp/data --checksum QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= --checksum-algorithm SHA256

前のコマンドに対する次のレスポンスの例では、サービスによって受信されたデータのデータ長、チェックサム、チェックサムアルゴリズムが返されます。

{ "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-count 5 --checksum 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= --checksum-algorithm SHA256 --checksum-aggregation-method LINEAR

前のコマンドに対するレスポンスの例を次に示します。

{ "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"}