Présentation du chargement partitionné - Amazon Simple Storage Service

Ce guide ne fait plus l'objet de mises à jour. Pour obtenir des informations et des instructions actuelles, reportez-vous au nouveau Guide de l'utilisateur Amazon S3.

Présentation du chargement partitionné

L'API de chargement partitionné vous permet de charger des objets volumineux en plusieurs parties. Vous pouvez utiliser cette API pour charger de nouveaux objets volumineux ou faire une copie d'un objet existant (consultez Opérations sur des objets).

Le chargement partitionné est un processus en trois étapes : vous lancez le chargement, vous chargez les parties de l'objet, et une fois toutes les parties chargées, vous terminez le chargement partitionné. Dès réception de la demande de fin de chargement partitionné, Amazon S3 crée l'objet à partir des parties chargées pour que vous puissiez ensuite y accéder comme vous le feriez avec n'importe quel autre objet du compartiment.

Vous pouvez lister tous vos chargements partitionnés en cours ou obtenir une liste des parties que vous avez chargées pour un chargement partitionné spécifique. Chacune de ces opérations est expliquée dans cette section.

Lancement du chargement partitionné

Lorsque vous envoyez une demande pour lancer un chargement partitionné, Amazon S3 renvoie une réponse avec un ID de chargement, qui est un identifiant unique pour le chargement partitionné. Vous devez inclure cet ID de chargement dès que vous chargez les parties, listez les parties, terminez un chargement ou arrêtez un chargement. Si vous souhaitez fournir des métadonnées qui décrivent l'objet en cours de chargement, vous devez le faire dans la demande de lancement du chargement partitionné.

Chargement de parties

Lorsque vous chargez une partie, outre l'ID de chargement, vous devez spécifier un numéro de partie. Vous pouvez choisir n'importe quel numéro de partie compris entre 1 et 10 000. Un numéro de partie identifie de manière unique une partie et sa place dans l'objet que vous chargez. Le numéro de partie que vous choisissez ne doit pas obligatoirement constituer une séquence consécutive (par exemple, cela peut être 1, 5 et 14). Si vous chargez une nouvelle partie avec le même numéro qu'une partie précédemment chargée, cette dernière est remplacée. Dès que vous chargez une partie, Amazon S3 renvoie un en-tête ETag dans sa réponse. Pour chaque chargement de partie, vous devez enregistrer le numéro de partie et la valeur ETag. Vous devez inclure ces valeurs dans la demande suivante pour terminer le chargement partitionné.

Note

Après avoir lancé un chargement partitionné et chargé une ou plusieurs parties, vous devez terminer ou arrêter le chargement partitionné afin que le stockage des parties chargées cesse de vous être facturé. C'est seulement après la fin ou l'arrêt d'un chargement partitionné qu'Amazon S3 libère le stockage des parties et cesse de vous le facturer.

Fin du chargement partitionné

Lorsque vous terminez un chargement partitionné, Amazon S3 crée un objet en concaténant les parties par ordre croissant en fonction des numéros de partie. Si des métadonnées d'objet sont fournies dans la demande de lancement du chargement partitionné, Amazon S3 les associe à l'objet. À l'issue d'une demande de chargement complet, les parties n'existent plus. La demande de chargement partitionné complet doit inclure l'ID de chargement et une liste des numéros de partie et des valeurs ETag correspondantes. La réponse d'Amazon S3 inclut une valeur ETag qui identifie de façon unique les données d'objet combinées. Cette valeur ETag n'est pas nécessairement un hachage MD5 des données de l'objet. Si vous le souhaitez, vous pouvez arrêter le chargement partitionné. Après avoir arrêté un chargement partitionné, vous ne pouvez pas charger de partie avec le même ID de chargement. Tout le stockage de n'importe quelle partie du chargement partitionné annulé est alors libéré. Si des chargements de partie étaient en cours, ils peuvent encore aboutir ou échouer même après un arrêt. Pour libérer tout le stockage consommé par l'ensemble des parties, vous devez arrêter un chargement partitionné uniquement après la fin du chargement de toutes les parties.

Listes de chargement partitionné

Vous pouvez lister les parties d'un chargement partitionné spécifique ou de tous les chargements partitionnés en cours. L'opération de liste des parties renvoie des informations sur les parties que vous avez chargées pour un chargement partitionné spécifique. Pour chaque demande de liste des parties, Amazon S3 renvoie des informations sur les parties pour le chargement partitionné spécifié, pour 1 000 parties maximum. S'il y a plus de 1 000 parties dans le chargement partitionné, vous devez envoyer une série de demandes de liste des parties pour récupérer toutes les parties. Notez que la liste des parties renvoyée n'inclut pas les parties dont le chargement n'est pas terminé. En utilisant l'opération d'affichage des chargements partitionnés, vous pouvez obtenir la liste des chargements partitionnés en cours. Un chargement partitionné en cours est un chargement que vous avez lancé, mais que vous n'avez pas encore terminé ou arrêté. Chaque demande renvoie 1 000 chargements partitionnés maximum. S'il y a plus de 1 000 téléchargements partitionnés en cours, vous devez envoyer des demandes supplémentaires pour récupérer les téléchargements partitionnés restants. Utilisez uniquement la liste renvoyée pour la vérification. Vous ne devez pas utiliser le résultat de la liste lorsque vous envoyez une demande de chargement partitionné complet. Au lieu de cela, conservez votre propre liste des numéros de parties que vous avez spécifiés lors du chargement des parties ainsi que les valeurs ETag correspondantes renvoyées par Amazon S3.

Opérations simultanées de chargement partitionné

Dans un environnement de développement distribué, il est possible pour l'application de lancer plusieurs mises à jour sur le même objet en même temps. L'application doit lancer plusieurs chargements partitionnés grâce à la même clé d'objet. Pour chacun de ces chargements, l'application peut ensuite charger des parties et envoyer une demande de chargement complet à Amazon S3 pour créer l'objet. Lorsque les compartiments sont activés pour la gestion des versions, un chargement partitionné terminé crée toujours une nouvelle version. Pour les compartiments qui ne sont pas activés pour la gestion des versions, il est possible que d'autres demandes reçues entre le début et la fin d'un chargement partitionné priment.

Note

Il est possible que d'autres demandes reçues entre le début et la fin d'un chargement partitionné priment. Par exemple, si une autre opération supprime une clé entre le début et la fin d'un chargement partitionné avec cette même clé, la réponse du chargement partitionné complet peut indiquer une création d'objet réussie sans que n'ayez jamais vu l'objet.

Chargement partitionné et tarification

Lorsque vous lancez un chargement partitionné, Amazon S3 conserve toutes les parties jusqu'à ce que vous terminiez ou arrêtiez le chargement. Tout au long de sa durée de vie, le stockage, la bande passante et les demandes pour ce chargement partitionné ainsi que ses parties associées vous sont facturés. Si vous arrêtez le chargement partitionné, Amazon S3 supprime les artefacts et les parties que vous avez chargées, et ils ne vous sont plus facturés. Pour de plus amples informations sur la tarification, veuillez consulter Tarification Amazon S3.

Utilisation d'une stratégie de cycle de vie des compartiments pour l'arrêt des chargements partitionnés incomplets

Après avoir lancé un chargement partitionné, vous commencez à charger les parties. Amazon S3 stocke ces parties, mais il crée l'objet à partir des parties uniquement après la fin de leur chargement et envoie une demande successful pour terminer le chargement partitionné (vous devez veiller à l'aboutissement de la demande pour terminer le chargement partitionné). Dès réception de la demande de fin de chargement partitionné, Amazon S3 assemble les parties et crée un objet.

Si la demande de fin de chargement partitionné n'aboutit pas, Amazon S3 n'assemble pas les parties et ne crée aucun objet. Par conséquent, les parties restent dans Amazon S3 et vous payez pour les parties stockées dans Amazon S3. Dans le cadre des bonnes pratiques, nous vous recommandons de configurer une règle du cycle de vie (grâce à l'action AbortIncompleteMultipartUpload) pour réduire les coûts de stockage.

Amazon S3 prend en charge une règle de cycle de vie de compartiment que vous pouvez utiliser pour demander à Amazon S3 d'arrêter les chargements partitionnés s'ils ne se terminent pas avant la valeur spécifiée pour le nombre de jours après leur lancement. Si un chargement partitionné n'est pas terminé dans le temps imparti, il peut faire l'objet d'un arrêt. Dans ce cas, Amazon S3 arrête le chargement partitionné (et supprime les parties associées au chargement partitionné).

Voici un exemple de configuration du cycle de vie qui spécifie une règle avec l'action AbortIncompleteMultipartUpload.

<LifecycleConfiguration> <Rule> <ID>sample-rule</ID> <Prefix></Prefix> <Status>Enabled</Status> <AbortIncompleteMultipartUpload> <DaysAfterInitiation>7</DaysAfterInitiation> </AbortIncompleteMultipartUpload> </Rule> </LifecycleConfiguration>

Dans l'exemple, la règle ne spécifie pas de valeur pour l'élément Prefix (préfixe du nom de la clé d'objet). Par conséquent, elle s'applique à tous les objets du compartiment pour lesquels vous avez lancé des téléchargements partitionnés. Tous les téléchargements partitionnés qui ont été lancés et qui ne se sont pas terminés dans les sept jours peuvent faire l’objet d’un arrêt. L'action n'a aucun effet sur les chargements partitionnés terminés.

Pour en savoir plus sur la configuration du cycle de vie du compartiment, consultez Gestion du cycle de vie des objets.

Note

Si le chargement partitionné est terminé dans le temps imparti spécifié dans la règle, l'action du cycle de vie AbortIncompleteMultipartUpload ne s'applique pas (cela signifie qu'Amazon S3 n'en tient pas compte). De plus, cette action ne s'applique pas aux objets : aucun objet n'est supprimé par cette action du cycle de vie.

L'interface de ligne de commande put-bucket-lifecycle-configuration suivante ajoute la configuration du cycle de vie au compartiment spécifié.

$ aws s3api put-bucket-lifecycle-configuration  \ --bucket bucketname  \ --lifecycle-configuration filename-containing-lifecycle-configuration

Pour tester l'interface de ligne de commande, procédez de la façon suivante :

  1. Configurez l'interface de ligne de commande AWS. Pour obtenir des instructions, consultez Configuration de l'interface de ligne de commande AWS.

  2. Enregistrez l'exemple suivant de configuration du cycle de vie dans un fichier (lifecycle.json). L'exemple de configuration spécifie un préfixe vide et par conséquent il s'applique à tous les objets du compartiment. Vous pouvez spécifier un préfixe pour limiter la stratégie à un sous-ensemble d'objets.

    { "Rules": [ { "ID": "Test Rule", "Status": "Enabled", "Filter": { "Prefix": "" }, "AbortIncompleteMultipartUpload": { "DaysAfterInitiation": 7 } } ] }
  3. Exécutez l'interface de ligne de commande suivante pour configurer la configuration du cycle de vie sur le compartiment.

    aws s3api put-bucket-lifecycle-configuration   \ --bucket bucketname  \ --lifecycle-configuration file://lifecycle.json
  4. Pour vérifier, récupérez la configuration du cycle de vie grâce à l'interface de ligne de commande get-bucket-lifecycle.

    aws s3api get-bucket-lifecycle  \ --bucket bucketname
  5. Pour supprimer la configuration du cycle de vie, utilisez l'interface de ligne de commande delete-bucket-lifecycle.

    aws s3api delete-bucket-lifecycle \ --bucket bucketname