Interruption d'un chargement partitionné - Amazon Simple Storage Service

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.

Interruption d'un chargement partitionné

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 vous n'envoyez pas correctement la demande complète du chargement partitionné, Amazon S3 n'assemble pas les parties et ne crée aucun objet.

Vous êtes facturé pour tout le stockage associé aux parties chargées. Pour plus d’informations, consultez Chargement partitionné et tarification. Il est donc important de terminer le chargement partitionné pour que l'objet soit créé, ou d'arrêter le chargement partitionné pour supprimer les parties chargées.

Vous pouvez arrêter un chargement partitionné en cours dans Amazon S3 à l'aide de la AWS Command Line Interface (AWS CLI), de l'API REST ou AWS des SDK. Vous pouvez également arrêter un chargement partitionné incomplet à l'aide d'une configuration de cycle de vie de compartiment.

Java

La classe TransferManager fournit la méthode abortMultipartUploads pour arrêter les chargements partitionnés en cours. Un chargement est considéré comme étant en cours dès que vous le lancez et jusqu'à ce qu'il soit terminé ou arrêté. Vous fournissez une valeur Date, et cette API arrête tous les chargements partitionnés dans ce compartiment qui avaient été lancés avant la Date spécifiée et qui sont toujours en cours.

Les tâches suivantes vous guident tout au long de l'utilisation des classes Java de haut niveau pour arrêter les chargements partitionnés.

Processus d'arrêt des chargements partitionnés grâce à l'API de haut niveau

1

Créez une instance de la classe TransferManager.

2

Exécutez la méthode TransferManager.abortMultipartUploads en indiquant le nom du compartiment et une valeur Date.

Le code Java suivant arrête tous les chargements partitionnés en cours initiés dans un compartiment spécifique, il y a plus d'une semaine. Pour obtenir des instructions sur la façon de créer et de tester un exemple pratique, consultez Test des exemples de code Java Amazon S3.

import java.util.Date; import com.amazonaws.AmazonClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.transfer.TransferManager; public class AbortMPUUsingHighLevelAPI { public static void main(String[] args) throws Exception { String existingBucketName = "*** Provide existing bucket name ***"; TransferManager tm = new TransferManager(new ProfileCredentialsProvider()); int sevenDays = 1000 * 60 * 60 * 24 * 7; Date oneWeekAgo = new Date(System.currentTimeMillis() - sevenDays); try { tm.abortMultipartUploads(existingBucketName, oneWeekAgo); } catch (AmazonClientException amazonClientException) { System.out.println("Unable to upload file, upload was aborted."); amazonClientException.printStackTrace(); } } }
Note

Vous pouvez également arrêter un chargement partitionné spécifique. Pour plus d’informations, consultez Utilisation des AWS SDK (API de bas niveau).

.NET

L'exemple C# suivant arrête tous les chargements partitionnés en cours initiés sur un compartiment spécifique il y a plus d'une semaine. Pour plus d'informations sur la compatibilité de l'exemple avec une version spécifique du AWS SDK for .NET et pour obtenir des instructions sur la création et le test d'un échantillon de travail, consultezExécution des exemples de code .NET Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Transfer; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class AbortMPUUsingHighLevelAPITest { private const string bucketName = "*** provide bucket name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 s3Client; public static void Main() { s3Client = new AmazonS3Client(bucketRegion); AbortMPUAsync().Wait(); } private static async Task AbortMPUAsync() { try { var transferUtility = new TransferUtility(s3Client); // Abort all in-progress uploads initiated before the specified date. await transferUtility.AbortMultipartUploadsAsync( bucketName, DateTime.Now.AddDays(-7)); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message); } } } }
Note

Vous pouvez également arrêter un chargement partitionné spécifique. Pour de plus amples informations, veuillez consulter Utilisation des AWS SDK (API de bas niveau).

Vous pouvez arrêter un chargement partitionné en cours en appelant la méthode AmazonS3.abortMultipartUpload. Cette méthode supprime toutes les parties qui ont été chargées dans Amazon S3 et libère les ressources. Vous devez fournir l'ID de chargement, le nom du compartiment et le nom de la clé. L'exemple de code Java suivant illustre comment arrêter un chargement partitionné en cours.

Pour arrêter un chargement partitionné, vous fournissez l'ID de chargement, ainsi que les noms de compartiment et de clé utilisés dans le chargement. Après avoir arrêté un chargement partitionné, vous ne pouvez pas utiliser l'ID de chargement pour charger les parties supplémentaires. Pour en savoir plus sur les chargements partitionnés Amazon S3, veuillez consulter Chargement et copie d'objets à l'aide d'un chargement partitionné.

Java

L'exemple de code Java suivant arrête un chargement partitionné en cours.

InitiateMultipartUploadRequest initRequest = new InitiateMultipartUploadRequest(existingBucketName, keyName); InitiateMultipartUploadResult initResponse = s3Client.initiateMultipartUpload(initRequest); AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); s3Client.abortMultipartUpload(new AbortMultipartUploadRequest( existingBucketName, keyName, initResponse.getUploadId()));
Note

Au lieu d'un chargement partitionné spécifique, vous pouvez arrêter tous vos chargements partitionnés démarrés avant un moment spécifique et qui sont toujours en cours. Cette opération de nettoyage est utile pour arrêter les anciens chargements partitionnés que vous avez initiés mais que vous n'avez pas terminés ou arrêtés. Pour plus d’informations, consultez Utilisation des AWS SDK (API de haut niveau).

.NET

L'exemple C# suivant montre comment arrêter un chargement partitionné. Pour obtenir un exemple C# complet incluant le code suivant, consultez Utilisation des AWS SDK (API de bas niveau).

AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest { BucketName = existingBucketName, Key = keyName, UploadId = initResponse.UploadId }; await AmazonS3Client.AbortMultipartUploadAsync(abortMPURequest);

Vous pouvez aussi annuler tous les chargements partitionnés en cours démarrés avant un moment spécifique. Cette opération de nettoyage est utile pour abandonner les chargements partitionnés que vous n'avez pas terminés ou interrompus. Pour de plus amples informations, veuillez consulter Utilisation des AWS SDK (API de haut niveau).

PHP

Cet exemple montre comment utiliser une classe de la version 3 de AWS SDK for PHP pour abandonner un téléchargement partitionné en cours. Cela suppose que vous suivez déjà les instructions Utilisation du kit AWS SDK for PHP et exécution d'exemples PHP et que vous les avez AWS SDK for PHP correctement installés. L'exemple de la méthode abortMultipartUpload().

Pour en savoir plus sur l'exécution des exemples PHP dans ce guide, consultez Exécution d'exemples PHP.

require 'vendor/autoload.php'; use Aws\S3\S3Client; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $uploadId = '*** Upload ID of upload to Abort ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // Abort the multipart upload. $s3->abortMultipartUpload([ 'Bucket' => $bucket, 'Key' => $keyname, 'UploadId' => $uploadId, ]);

Pour plus d'informations sur l'utilisation de l'API REST pour arrêter un téléchargement AbortMultipartUploaden plusieurs parties, consultez le manuel Amazon Simple Storage Service API Reference.

Pour plus d'informations sur l'utilisation du AWS CLI pour arrêter un téléchargement partitionné, consultez abort-multipart-uploadla référence des AWS CLI commandes.