

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

# EBS direct API を使用して Amazon EBS スナップショットを読み取る
<a name="readsnapshots"></a>

次の手順では、EBS direct API を使用してスナップショットを読み取る方法について説明します。

1. スナップショット内にあるすべてのブロックのブロックインデックスとブロックトークンを表示するには、ListSnapshotBlocks アクションを使用します。同じボリュームやスナップショット系列の 2 つのスナップショット間で異なるブロックのブロックインデックスとブロックトークンのみを表示するには、ListChangeBlocks アクションを使用します。これらのアクションは、データを取得するブロックのブロックトークンとブロックインデックスを識別するのに役立ちます。

1. GetSnapshotBlock アクションを使用し、データを取得するブロックのブロックインデックスとブロックトークンを指定します。

**注記**  
アーカイブされたスナップショットで EBS direct API を使用することはできません。

次に、EBS direct API を使用しながらスナップショットを読み取る場合の例を示します。

**Topics**
+ [スナップショット内のブロックの一覧表示](#list-blocks)
+ [2 つのスナップショット間で異なるブロックの一覧表示](#list-different-blocks)
+ [スナップショットからのブロックデータの取得](#get-block-data)

## スナップショット内のブロックの一覧表示
<a name="list-blocks"></a>

------
#### [ AWS CLI ]

次の [list-snapshot-blocks](https://docs.aws.amazon.com/cli/latest/reference/ebs/list-snapshot-blocks.html) コマンドの例では、スナップショット `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](https://docs.aws.amazon.com/ebs/latest/APIReference/API_ListSnapshotBlocks.html) リクエストの例では、スナップショット `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
  }
```

------

## 2 つのスナップショット間で異なるブロックの一覧表示
<a name="list-different-blocks"></a>

2 つのスナップショット間で、変更されたブロックを一覧表示するために**ページ分割されたリクエスト**を実行する場合は、次の点に注意してください。
+ レスポンスには、1 つ以上の空の `ChangedBlocks` 配列を含めることができます。例:
  + スナップショット 1 - ブロックインデックス `0` - `999` を含む 1000 個のブロックの完全なスナップショット。
  + スナップショット 2 - ブロックインデックス `999` を持つ変更されたブロックが 1 個だけの増分スナップショット。

  これらのスナップショットの変更されたブロックを `StartingBlockIndex = 0` および `MaxResults = 100` で一覧表示し、`ChangedBlocks` の空の配列を返します。変更されたブロックが 10 番目の結果セットで返されるまで `nextToken` を使用して残りの結果をリクエストする必要があります。これにはブロックインデックス `900` - `999` を持つブロックが含まれます。
+ レスポンスは、スナップショット内の書き込まれていないブロックをスキップできます。例:
  + スナップショット 1 - ブロックインデックス `2000` - `2999` を含む 1000 個のブロックの完全なスナップショット。
  + スナップショット 2 - ブロックインデックス `2000` を持つ変更されたブロックが 1 個だけの増分スナップショット。

  これらのスナップショットの変更されたブロックを `StartingBlockIndex = 0` および `MaxResults = 100` で一覧表示すると、レスポンスはブロックインデックス `0` - `1999` をスキップし、ブロックインデックス `2000` を含みます。レスポンスには、空の `ChangedBlocks` 配列は含まれません。

------
#### [ AWS CLI ]

次の [list-changed-blocks](https://docs.aws.amazon.com/cli/latest/reference/ebs/list-changed-blocks.html) コマンドの例では、スナップショット `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
```

前のコマンドに対する次のレスポンスの例は、2 つのスナップショット間でブロックインデックス 0、6000、6001、6002、6003 が異なることを示しています。さらに、ブロックインデックス 6001、6002、および 6003 は、指定された最初のスナップショット ID にのみ存在し、2 番目のスナップショット ID には存在しません。これは、レスポンスに 2 番目のブロックトークンが表示されないためです。

`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](https://docs.aws.amazon.com/ebs/latest/APIReference/API_ListChangedBlocks.html) リクエストの例では、`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>
```

前のリクエストに対する次のレスポンスの例では、2 つのスナップショット間でブロックインデックス `0`、`3072`、`6002`、`6003` が異なることを示しています。さらに、ブロックインデックス `6002` および `6003` は、指定した最初のスナップショット ID にのみ存在し、2 番目のスナップショット ID には存在しません。これは、レスポンスに 2 番目のブロックトークンが表示されないためです。

`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
  }
```

------

## スナップショットからのブロックデータの取得
<a name="get-block-data"></a>

------
#### [ AWS CLI ]

次の [get-snapshot-block](https://docs.aws.amazon.com/cli/latest/reference/ebs/get-snapshot-block.html) コマンドの例では、スナップショット `6001` 内でブロックインデックスが `AAABASBpSJ2UAD3PLxJnCt6zun4/T4sU25Bnb8jB5Q6FRXHFqAIAqE04hJoR` で、ブロックトークンが `snap-1234567890` のデータを返します。バイナリデータは、Windows コンピュータの `C:\Temp` ディレクトリ内の `data` ファイルに出力されます。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](https://docs.aws.amazon.com/ebs/latest/APIReference/API_GetSnapshotBlock.html) リクエストの例では、スナップショット `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
```

------