Gravar snapshots do Amazon EBS com APIs diretas do EBS - Amazon EBS

Gravar snapshots do Amazon EBS com APIs diretas do EBS

As etapas a seguir descrevem como usar as APIs diretas do EBS para gravar snapshots incrementais:

  1. Use a ação StartSnapshot e especifique um ID de snapshot pai para iniciar um snapshot como snapshot incremental de um existente, ou omita o ID do snapshot pai para iniciar um novo snapshot. Essa ação retorna o novo ID de snapshot que está em estado pendente.

  2. Use a ação PutSnapshotBlock e especifique o ID do snapshot pendente para adicionar dados a ele na forma de blocos individuais. Especifique uma soma de verificação SHA256 codificada como Base64 para o bloco de dados transmitido. O serviço calcula a soma de verificação dos dados recebidos e os valida com relação à soma de verificação especificada. A ação falhará se as somas de verificação não corresponderem.

  3. Quando terminar de adicionar dados ao snapshot pendente, use a ação CompleteSnapshot para iniciar um fluxo de trabalho assíncrono que sele o snapshot e mova-o para um estado concluído.

Repita essas etapas para criar um novo snapshot incremental usando o snapshot criado anteriormente como pai.

Por exemplo, no diagrama a seguir, o snapshot A é o primeiro novo snapshot iniciado. O snapshot A é usado como snapshot pai para iniciar o snapshot B. O snapshot B é usado como snapshot pai para iniciar e criar o snapshot C. Os snapshots A, B e C são snapshots incrementais. O snapshot A é usado para criar o volume 1 do EBS. O snapshot D é criado a partir do volume 1 do EBS. O snapshot D é um snapshot incremental de A; ele não é um snapshot incremental de B nem C.

APIs diretas do EBS usadas para criar snapshots incrementais.

Os exemplos a seguir mostram como gravar snapshots usando as APIs diretas do EBS.

Iniciar um snapshot

AWS CLI

O comando de exemplo start-snapshot a seguir inicia um snapshot 8 GiB usando o snapshot snap-123EXAMPLE1234567 como snapshot pai. O novo snapshot será um snapshot incremental do snapshot pai. O snapshot será movido para um estado de erro se não houver solicitações put ou complete feitas para o snapshot dentro do período limite especificado de 60 minutos. O token 550e8400-e29b-41d4-a716-446655440000 do cliente garante idempotência para a solicitação. Se o token do cliente for omitido, o SDK da AWS gerará um automaticamente. Para obter mais informações sobre idempotência, consulte Garantir idempotência em solicitações da API StartSnapshot.

aws ebs start-snapshot --volume-size 8 --parent-snapshot snap-123EXAMPLE1234567 --timeout 60 --client-token 550e8400-e29b-41d4-a716-446655440000

O exemplo de resposta a seguir para o comando anterior mostra o ID do snapshot, o ID da conta da AWS, o status, o tamanho do volume em GiB e o tamanho dos blocos no snapshot. O snapshot é iniciado em estado pending. Especifique o ID do snapshot nos comandos put-snapshot-block subsequentes para gravar dados no snapshot, depois, use o comando complete-snapshot para concluir o snapshot e alterar seu status para completed.

{ "SnapshotId": "snap-0aaEXAMPLEe306d62", "OwnerId": "111122223333", "Status": "pending", "VolumeSize": 8, "BlockSize": 524288 }
AWS API

A solicitação de exemplo StartSnapshot a seguir inicia um snapshot 8 GiB usando o snapshot snap-123EXAMPLE1234567 como snapshot pai. O novo snapshot será um snapshot incremental do snapshot pai. O snapshot será movido para um estado de erro se não houver solicitações put ou complete feitas para o snapshot dentro do período limite especificado de 60 minutos. O token 550e8400-e29b-41d4-a716-446655440000 do cliente garante idempotência para a solicitação. Se o token do cliente for omitido, o SDK da AWS gerará um automaticamente. Para obter mais informações sobre idempotência, consulte Garantir idempotência em solicitações da API StartSnapshot.

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 }

O exemplo de resposta a seguir para a solicitação anterior mostra o ID do snapshot, o ID da conta da AWS, o status, o tamanho do volume em GiB e o tamanho dos blocos no snapshot. O snapshot é iniciado em estado pendente. Especifique o ID do snapshot em uma solicitação PutSnapshotBlocks subsequente para gravar dados no snapshot.

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 }

Inserir dados em um snapshot

AWS CLI

O comando de exemplo put-snapshot-block a seguir grava 524288 bytes de dados no índice de bloco 1000 no snapshot snap-0aaEXAMPLEe306d62. A soma de verificação QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= codificada pelo Base64 foi gerada com o uso do algoritmo SHA256. Os dados transmitidos ficam no arquivo /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

A resposta de exemplo a seguir para o comando anterior confirma o comprimento dos dados, a soma de verificação e o algoritmo de soma de verificação para os dados recebidos pelo serviço.

{ "DataLength": "524288", "Checksum": "QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=", "ChecksumAlgorithm": "SHA256" }
AWS API

A solicitação de exemplo PutSnapshot a seguir grava 524288 bytes de dados no índice de bloco 1000 no snapshot snap-052EXAMPLEc85d8dd. A soma de verificação QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= codificada pelo Base64 foi gerada com o uso do algoritmo SHA256. Os dados são transmitidos no corpo da solicitação e representados como BlockData no exemplo a seguir.

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

Veja a seguir a resposta de exemplo para a solicitação anterior, que confirma o comprimento dos dados, a soma de verificação e o algoritmo de soma de verificação para os dados recebidos pelo serviço.

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

Concluir um snapshot

AWS CLI

O comando de exemplo complete-snapshot a seguir conclui o snapshot snap-0aaEXAMPLEe306d62. O comando especifica que 5 blocos foram gravados no snapshot. A soma de verificação 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= representa a soma de verificação para o conjunto completo de dados gravados em um snapshot. Para obter mais informações sobre somas de verificação, consulte Usar somas de verificação de APIs diretas do EBS para validar dados de snapshots anteriormente neste guia.

aws ebs complete-snapshot --snapshot-id snap-0aaEXAMPLEe306d62 --changed-blocks-count 5 --checksum 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= --checksum-algorithm SHA256 --checksum-aggregation-method LINEAR

Veja a seguir um exemplo de resposta para o comando anterior.

{ "Status": "pending" }
AWS API

A solicitação de exemplo CompleteSnapshot a seguir conclui o snapshot snap-052EXAMPLEc85d8dd. O comando especifica que 5 blocos foram gravados no snapshot. A soma de verificação 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= representa a soma de verificação para o conjunto completo de dados gravados em um snapshot.

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>

Veja a seguir um exemplo de resposta para a solicitação anterior.

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