Écrire des instantanés avec les API directes EBS - Amazon EBS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Écrire des instantanés avec les API directes EBS

Les étapes suivantes décrivent comment utiliser des API directes EBS pour écrire des instantanés incrémentiels :

  1. Utilisez cette StartSnapshot action et spécifiez un ID de cliché parent pour démarrer un instantané en tant que capture incrémentielle d'un instantané existant, ou omettez l'ID de cliché parent pour démarrer un nouveau cliché. Cette action renvoie le nouvel ID d’instantané, qui est en attente.

  2. Utilisez l' PutSnapshotBlock action et spécifiez l'ID de l'instantané en attente pour y ajouter des données sous forme de blocs individuels. Vous devez spécifier un total de contrôle SHA256 codé en Base64 pour le bloc de données transmises. Le service calcule la somme de contrôle des données reçues et la valide avec la somme de contrôle que vous avez spécifiée. L’action échoue si les sommes de contrôle ne correspondent pas.

  3. Lorsque vous avez terminé d'ajouter des données à l'instantané en attente, utilisez cette CompleteSnapshot action pour démarrer un flux de travail asynchrone qui scelle l'instantané et le fait passer à l'état terminé.

Répétez ces étapes pour créer un nouvel instantané incrémentiel à l’aide de l’instantané précédemment créé en tant que parent.

Par exemple, dans le diagramme suivant, l’instantané A est le premier nouvel instantané démarré. L’instantané A est utilisé comme instantané parent pour démarrer l’instantané B. L’instantané B est utilisé comme instantané parent pour démarrer et créer l’instantané C. Les instantanés A, B et C sont des instantanés incrémentiels. L’instantané A est utilisé pour créer le volume EBS 1. L’instantané D est créé à partir du volume EBS 1. L’instantané D est un instantané incrémentiel de A ; et non un instantané incrémentiel de B ou C.

API EBS direct utilisées pour créer des instantanés incrémentiels.

Les exemples suivants montrent comment écrire des instantanés à l’aide des API directes EBS.

Démarrer un instantané

AWS CLI

L’exemple de commande start-snapshot suivant démarre un instantané 8 Gio en utilisant l’instantané snap-123EXAMPLE1234567 comme instantané parent. Le nouvel instantané sera un instantané incrémentiel de l’instantané parent. L’instantané passe à un état d’erreur s’il n’y a pas de demande d’ajout ou d’exécution pour l’instantané pendant la période de 60 minutes spécifiée. Le jeton client 550e8400-e29b-41d4-a716-446655440000 garantit l’idempotence pour la demande. Si le jeton client est omis, le AWS SDK en génère un automatiquement pour vous. Pour plus d’informations sur l’idempotence, consultez Idempotencia pour l'API StartSnapshot .

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

L’exemple de réponse suivant pour la commande précédente indique l’ID du snapshot, l’ID du compte AWS , l’état, la taille du volume en Gio et la taille des blocs dans l’instantané. L’instantané est démarré dans un état pending. Spécifiez l’ID d’instantané dans les commandes put-snapshot-block suivantes pour écrire des données dans l’instantané, puis utilisez la commande complete-snapshot pour terminer l’instantané et modifier son état sur completed.

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

L'StartSnapshotexemple de demande suivant démarre un instantané 8 GiB, en utilisant l'instantané snap-123EXAMPLE1234567 comme instantané parent. Le nouvel instantané sera un instantané incrémentiel de l’instantané parent. L’instantané passe à un état d’erreur s’il n’y a pas de demande d’ajout ou d’exécution pour l’instantané pendant la période de 60 minutes spécifiée. Le jeton client 550e8400-e29b-41d4-a716-446655440000 garantit l’idempotence pour la demande. Si le jeton client est omis, le AWS SDK en génère un automatiquement pour vous. Pour plus d’informations sur l’idempotence, consultez Idempotencia pour l'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 }

L’exemple de réponse suivant pour la demande précédente indique l’ID d’instantané, l’ID de compte AWS , l’état, la taille du volume en Gio et la taille des blocs dans l’instantané. L’instantané est démarré dans un état en attente. Spécifiez l’ID d’instantané dans une demande PutSnapshotBlocks ultérieure d’écriture de données dans l’instantané .

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 }

Ajouter des données dans un instantané

AWS CLI

L’exemple de commande put-snapshot suivant écrit les 524288 octets de données pour bloquer l’index 1000 sur l’instantané snap-0aaEXAMPLEe306d62. La somme de contrôle QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= codée en Base64 a été générée à l'aide de l'algorithme SHA256. Les données transmises se trouvent dans le fichier /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

L’exemple de réponse suivant pour la commande précédente confirme la longueur des données, la somme de contrôle et l’algorithme de somme de contrôle pour les données reçues par le service.

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

L'PutSnapshotexemple de demande suivant écrit des 524288 octets de données pour bloquer l'index 1000 sur un instantanésnap-052EXAMPLEc85d8dd. La somme de contrôle QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM= codée en Base64 a été générée à l’aide de l’algorithme SHA256. Les données sont transmises dans le corps de la demande et sont représentées comme BlockDatadans l'exemple suivant.

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

Voici un exemple de réponse pour la demande précédente, qui confirme la longueur des données, la somme de contrôle et l’algorithme de somme de contrôle pour les données que le service reçoit.

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

Terminer un instantané

AWS CLI

L’exemple de commande complete-snapshot suivant termine l’instantané snap-0aaEXAMPLEe306d62. La commande spécifie que les blocs 5 ont été écrits dans l'instantané. La somme de contrôle 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= représente la somme de contrôle de l'ensemble complet des données écrites dans un instantané. Pour plus d’informations sur les sommes de contrôle, consultez Utiliser les totaux de contrôle plus haut dans ce guide.

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

Voici un exemple de réponse pour la commande précédente.

{ "Status": "pending" }
AWS API

L'CompleteSnapshotexemple de demande suivant permet de terminer le snapshotsnap-052EXAMPLEc85d8dd. La commande spécifie que les blocs 5 ont été écrits dans l’instantané. La somme de contrôle 6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c= représente la somme de contrôle de l’ensemble complet des données écrites dans un instantané.

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>

Voici un exemple de réponse pour la demande précédente.

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