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

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 téléchargement partitionné, Amazon S3 renvoie une réponse avec un ID de chargement, qui est un identifiant unique pour le téléchargement partitionné. Vous devez inclure cet ID de chargement dès que vous chargez les parties, listez les parties, terminez un chargement ou interrompez 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. Chaque fois 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 interrompre 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'annulation d'un téléchargement partitionné qu' Amazon S3 libère le stockage des parties et cesse de vous le facturer.

Fin (ou abandon) 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. Votre demande de chargement partitionné complet doit inclure l'ID de chargement et la liste des numéros de partie et des valeurs ETag correspondantes. La réponse d'Amazon S3 comprend 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 interrompre le chargement partitionné. Après avoir interrompu un chargement partitionné, vous ne pouvez pas charger de partie avec le même ID de chargement. Tout le stockage consommé par les parties provenant du chargement partitionné interrompu est ensuite libéré. Si des chargements de partie sont en cours, ils peuvent encore aboutir ou échouer même après une interruption. Pour libérer tout le stockage consommé par l'ensemble des parties, vous devez interrompre 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 interrompu. 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. A la place, conservez votre propre liste des numéros de partie 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 interrompiez 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 interrompez le chargement partitionné, Amazon S3 supprime les artefacts et les parties que vous avez chargés, et ils ne vous sont plus facturés. Pour plus d'informations sur la tarification, consultez Tarification Amazon S3.

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

Vous pouvez commencer à charger les parties après avoir lancé un chargement partitionné. Amazon S3 stocke ces parties, mais ne crée l'objet à partir de celles-ci qu'à partir du moment où elles ont toutes été chargées et que vous avez envoyé une demande successful pour terminer le chargement partitionné (vous devez vérifier que votre demande d'achèvement du chargement partitionné a abouti). Dès réception de la demande de fin de chargement partitionné, Amazon S3 assemble les parties et crée un objet.

Si vous n'envoyez pas correctement la demande d'achèvement du chargement partitionné, 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'annuler les chargements partitionnés s'ils n'aboutissent pas au bout du nombre de jours spécifié après leur lancement. Si un téléchargement partitionné n'est pas terminé dans le temps imparti, il peut faire l'objet d'une interruption. Dans ce cas, Amazon S3 interrompt le téléchargement partitionné (et supprime les parties associées au télé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’une interruption. L'action Annuler n'a aucun effet sur les télé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é aboutit dans le délai imparti (en jours) spécifié dans la règle, l'action du cycle de vie AbortIncompleteMultipartUpload ne s'applique pas (cela signifie qu'Amazon S3 n'effectue aucune action). 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