# Compatibilité API S3

## APIs S3 supportées

<table data-full-width="true"><thead><tr><th width="327">Méthodes</th><th>Notes</th></tr></thead><tbody><tr><td>Service GET</td><td><strong>Le service de stockage objet cegedim.cloud</strong> supporte les paramètres <code>marker</code> et <code>max-keys</code> pour permettre la pagination des listes lors de l'énumération des objets dans le <strong>Buckets</strong>.</td></tr><tr><td>DELETE Bucket</td><td></td></tr><tr><td>DELETE Bucket cors</td><td></td></tr><tr><td><p>DELETE Bucket lifecycle</p><p><br></p></td><td><p>Seules les actions d'expiration sont supportées.</p><p>Les configurations liées à l'archivage (comme AWS Glacier) ne sont pas supportées.</p><p>Les configurations de cycle de vue ne sont pas supportées les buckets où la fonctionnalité "<strong><code>system de fichier</code></strong>" est activée.</p></td></tr><tr><td>DELETE Bucket policy</td><td></td></tr><tr><td>GET Bucket (List Objects)</td><td>Pour les buckets où la fonctionnalité "<strong><code>system de fichier</code></strong>" est activée, le "<strong><code>slash" (/)</code></strong> est le seul délimiteur pris en charge lors de l'énumération des objets dans le buckets.</td></tr><tr><td>GET Bucket cors</td><td></td></tr><tr><td>GET Bucket acl</td><td></td></tr><tr><td>GET Bucket lifecycle</td><td><p>Seule les actions d'expiration sont supportées.</p><p>Les configurations liées à l'archivage (comme AWS Glacier) ne sont pas supportées.</p><p>Les configurations de cycle de vue ne sont pas supportées les buckets où la fonctionnalité "<strong><code>system de fichier</code></strong>" est activée.</p></td></tr><tr><td>GET Bucket policy</td><td></td></tr><tr><td>GET Bucket Object versions</td><td></td></tr><tr><td>GET Bucket versioning</td><td></td></tr><tr><td>HEAD Bucket</td><td></td></tr><tr><td>List Multipart Uploads</td><td></td></tr><tr><td>PUT Bucket</td><td>Lorsqu'une requête de type PUT est effectuée sur un buckets existant, reportez-vous à la section "<strong>Comportements spécifiques</strong>" lorsque le buckets existe déjà.</td></tr><tr><td>PUT Bucket cors</td><td></td></tr><tr><td>PUT Bucket acl</td><td></td></tr><tr><td>PUT Bucket lifecycle</td><td><p>Seule les actions d'expiration sont supportées.</p><p>Les configurations liées à l'archivage (comme AWS Glacier) ne sont pas supportées.</p><p>Les configurations de cycle de vue ne sont pas supportées les buckets où la fonctionnalité "<strong><code>system de fichier</code></strong>" est activée.</p></td></tr><tr><td>PUT Bucket policy</td><td><p>Les politiques de gestion des <strong>Buckets</strong> ne peuvent pas être configurées pour des opérations qui ne sont pas prises en charge par le <strong>service de stockage objet cegedim.cloud</strong>.</p><p>Vous pouvez retrouver la liste complète des opérations et des conditions supportées <a href="https://docs.cegedim.cloud/display/OST/Bucket+Policies">ici</a>.</p></td></tr><tr><td>PUT Bucket versioning</td><td></td></tr><tr><td>DELETE Object</td><td></td></tr><tr><td>Delete Multiple Objects</td><td></td></tr><tr><td>GET Object</td><td></td></tr><tr><td>GET Object ACL</td><td></td></tr><tr><td>HEAD Objec</td><td></td></tr><tr><td>PUT Object</td><td>Supports chunked PUT</td></tr><tr><td>PUT Object acl</td><td></td></tr><tr><td>PUT Object - Copy</td><td></td></tr><tr><td>OPTIONS object</td><td></td></tr><tr><td>Initiate Multipart Upload</td><td></td></tr><tr><td>Upload Part</td><td></td></tr><tr><td>Upload Part - Copy</td><td></td></tr><tr><td>Complete Multipart Upload</td><td>Le service de <strong>Stockage Objet cegedim.cloud</strong> renvoie un ETag de 00 pour cette requête. Cette réponse diffère de celle d'Amazon S3.</td></tr><tr><td>Abort Multipart Upload</td><td></td></tr><tr><td>List Parts</td><td></td></tr></tbody></table>

## APIs S3 non supportées

<table data-full-width="true"><thead><tr><th width="325">Fonctionnalité</th><th>Notes</th></tr></thead><tbody><tr><td>DELETE Bucket tagging</td><td></td></tr><tr><td>DELETE Bucket website</td><td></td></tr><tr><td>GET Bucket location</td><td></td></tr><tr><td>GET Bucket logging</td><td></td></tr><tr><td>GET Bucket notification</td><td></td></tr><tr><td>GET Bucket tagging</td><td></td></tr><tr><td>GET Bucket requestPayment</td><td>Le service de <strong>Stockage Objet cegedim.cloud</strong> utilise son propre modèle pour les paiements. Cette fonctionnalité n'est pas supportée.</td></tr><tr><td>GET Bucket website</td><td></td></tr><tr><td>PUT Bucket logging</td><td></td></tr><tr><td>PUT Bucket notification</td><td></td></tr><tr><td>PUT Bucket tagging</td><td></td></tr><tr><td>PUT Bucket requestPayment</td><td>Le service de <strong>Stockage Objet cegedim.cloud</strong> utilise son propre modèle pour les paiements. Cette fonctionnalité n'est pas supportée.</td></tr><tr><td>PUT Bucket website</td><td></td></tr><tr><td>Object APIs</td><td></td></tr><tr><td>GET Object torrent</td><td></td></tr><tr><td>POST Object</td><td></td></tr><tr><td>POST Object restore</td><td>Cette opération est liée à AWS Glacier. Cette fonctionnalité n'est pas supportée.</td></tr></tbody></table>

## Comportements spécifiques

Comportements spécifiques par rapport à l'**API AWS**.

***

La création de **Buckets** utilisant des noms de moins de trois caractères échoue avec le message :

```
400 Bad Request, InvalidBucketName
```

***

Lors de la création d'un **Bucket** ou d'un objet avec un contenu vide, le service de Stockage Objet cegedim.cloud renvoie une erreur `400 invalid content-length` ce qui diffère d'AWS qui renvoie une erreur `400 Bad Request`.

***

La copie d'un objet dans un autre **Bucket** qui indexe la même clé d'indexation des métadonnées utilisateur mais avec un type de données différent n'est pas prise en charge et échoue avec une erreur `500 Server Error`.

***

Lors de l'énumération des objets d'un **Bucket**, si vous utilisez un préfixe et un délimiteur mais fournissez un **marker** invalide, le service de Stockage Objet cegedim.cloud renvoie une erreur `500 Server Error` ou `400 Bad Request` pour un **Bucket** si la fonctionnalité "Système de fichier" est activée.

Cependant, AWS renvoie **`200 OK`** et les objets ne sont pas répertoriés.

***

Pour les **Buckets** où la gestion des versions est activée, le service de Stockage Objet cegedim.cloud ne crée pas de marqueur de suppression (Delete marker) lorsqu'un objet déjà supprimé est supprimé à nouveau.

Cela diffère de l'API AWS S3, qui insère toujours un marqueur de suppression (Delete marker) pour la suppression d'objets supprimés dans les **Buckets** où le versionnage est activé.

Ce changement de comportement n'est applicable que lorsque l'objet supprimé est à nouveau supprimé de la zone propriétaire.

***

Lorsqu'une tentative est faite pour créer un **Bucket** avec un nom déjà existant, le comportement de service de Stockage Objet cegedim.cloud peut différer de celui d'AWS.

l'API AWS retourne toujours une erreur `409 Conflit` lorsqu'un utilisateur disposant des permissions **(ACL)** `FULL_CONTROL` sur le **Bucket**, ou de toute autre autorisation, tente de recréer le **Bucket**.

Lorsqu'un **Object User** avec les permissions (**ACL**) `FULL_CONTROL` ou `WRITE_ACP` sur le **Bucket** tente de recréer le **Bucket**,

Le service de Stockage Objet cegedim.cloud renvoie `200 OK` et l'**ACL est écrasée**, cependant, le propriétaire n'est pas modifié.

Un **Object User** avec des permissions `WRITE/READ` obtiendra une erreur `409 Conflit` s'il tente de recréer un **bucket**.

Lorsqu'une tentative de recréer un **bucket** est faite par le propriétaire du **bucket**, le service renvoie `200 OK` et **écrase l'ACL**. L'API AWS S3 se comporte de la même manière.

Lorsqu'un **Object User** n'a pas de privilèges d'accès au **Bucket**, une tentative pour recréer le **Bucket** entraîne une erreur `409 Conflit`. L'API AWS S3 se comporte de la même manière.
