

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.

# Rédigez des instantanés Amazon EBS avec EBS direct APIs
<a name="writesnapshots"></a>

Les étapes suivantes décrivent comment utiliser l'EBS direct pour écrire des APIs 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.

1. 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 une SHA256 somme de contrôle codée en Base64 pour le bloc de données transmis. 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.

1. 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.

![\[EBS direct APIs utilisé pour créer des instantanés incrémentiels.\]](http://docs.aws.amazon.com/fr_fr/ebs/latest/userguide/images/ebs-apis-write.png)


Les exemples suivants montrent comment écrire des instantanés à l'aide de l'EBS direct. APIs

**Topics**
+ [Démarrer un instantané](#start-snapshot)
+ [Ajouter des données dans un instantané](#put-data)
+ [Terminer un instantané](#complete-snapshot)

## Démarrer un instantané
<a name="start-snapshot"></a>

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

L’exemple de commande [start-snapshot](https://docs.aws.amazon.com/cli/latest/reference/ebs/start-snapshot.html) 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 [Garantir l'idempuissance des demandes d'API StartSnapshot](ebs-direct-api-idempotency.md).

```
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'[StartSnapshot](https://docs.aws.amazon.com/ebs/latest/APIReference/API_StartSnapshot.html)exemple 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 [Garantir l'idempuissance des demandes d'API StartSnapshot](ebs-direct-api-idempotency.md).

```
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é
<a name="put-data"></a>

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

L'[put-snapshot-block](https://docs.aws.amazon.com/cli/latest/reference/ebs/put-snapshot-block.html)exemple de commande suivant écrit des `524288` octets de données pour bloquer l'index `1000` sur un 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'[PutSnapshot](https://docs.aws.amazon.com/ebs/latest/APIReference/API_PutSnapshotBlock.html)exemple 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 *BlockData* dans 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é
<a name="complete-snapshot"></a>

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

L’exemple de commande [complete-snapshot](https://docs.aws.amazon.com/cli/latest/reference/ebs/complete-snapshot.html) 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 [Utilisez les APIs checksums directs d'EBS pour valider les données des instantanés](ebsapis-using-checksums.md) 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'[CompleteSnapshot](https://docs.aws.amazon.com/ebs/latest/APIReference/API_CompleteSnapshot.html)exemple de demande suivant permet de terminer le snapshot`snap-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"}
```

------