Interruzione di un caricamento in più parti - Amazon Simple Storage Service

Interruzione di un caricamento in più parti

Dopo aver avviato un caricamento in più parti, le parti vengono caricate. Amazon S3 le archivia, ma crea l'oggetto basato su di esse solo al termine del caricamento di tutte le parti, quindi invia una richiesta successful per il completamento del caricamento in più parti (è necessario verificare che questa richiesta vada a buon fine). Quando riceve la richiesta di completamento del caricamento in più parti, Amazon S3 assembla le parti e crea un oggetto. Se il completamento della richiesta di caricamento in più parti non riesce, Amazon S3 non assemblerà le parti e non creerà alcun oggetto.

Ti viene addebitato tutto lo spazio di storage associato alle parti caricate. Per ulteriori informazioni, consulta Caricamento in più parti e prezzi. È pertanto necessario completare il caricamento in più parti per creare l'oggetto oppure interromperlo per rimuovere le parti caricate.

Puoi interrompere un caricamento in più parti in corso in Amazon S3 utilizzando la AWS Command Line Interface (AWS CLI), REST API o gli SDK AWS. È inoltre possibile interrompere un caricamento in più parti incompleto utilizzando una policy relativa al ciclo di vita del bucket.

Java

La classe TransferManager fornisce il metodo abortMultipartUploads per arrestare i caricamenti in più parti in corso. Un caricamento è considerato in esecuzione dopo l'avvio e finché non viene completato o interrotto. Specifica un valore Date per fare in modo che l'API interrompa tutti i caricamenti in più parti sul bucket avviati prima del valore specificato per Date e ancora in esecuzione.

Le seguenti attività mostrano in dettaglio come utilizzare le classi Java di alto livello per interrompere i caricamenti in più parti.

Processo di interruzione di caricamenti in più parti tramite l'API di alto livello

1

Crea un'istanza della classe TransferManager.

2

Esegui il metodo TransferManager.abortMultipartUploads passando il nome del bucket e un valore Date.

Il codice Java seguente interrompe l'esecuzione di tutti i caricamenti in più parti avviati su un bucket specifico più di una settimana prima. Per istruzioni su come creare e testare un esempio di utilizzo, consulta Test degli esempi di codice Java di 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(); } } }
Nota

È anche possibile interrompere un caricamento in più parti specifico. Per ulteriori informazioni, consulta Utilizzo degli SDK AWS (API di basso livello).

.NET

L'esempio di codice C# seguente interrompe l'esecuzione di tutti i caricamenti in più parti avviati su un bucket nella settimana precedente. Per informazioni sulla compatibilità dell'esempio con una versione specifica di AWS SDK for .NET e le istruzioni su come creare e testare un esempio di utilizzo, consulta Esecuzione degli esempi di codice .NET di 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); } } } }
Nota

È anche possibile interrompere un caricamento in più parti specifico. Per ulteriori informazioni, consulta Utilizzo degli SDK AWS (API di basso livello).

È possibile interrompere l'esecuzione di un caricamento in più parti chiamando il metodo AmazonS3.abortMultipartUpload. Questo metodo elimina tutte le parti che sono state caricate in Amazon S3 e libera le risorse. È necessario specificare l'ID di caricamento, il nome del bucket e il nome della chiave. Il seguente esempio di codice Java mostra come interrompere l'esecuzione di un caricamento in più parti.

Per interrompere un caricamento in più parti, devi fornire l'ID di caricamento e i nomi di bucket e chiave utilizzati nel caricamento. Dopo aver interrotto un caricamento in più parti, non puoi utilizzare l'ID di caricamento per caricare altre parti. Per ulteriori informazioni sui caricamenti in più parti di Amazon S3, consulta Caricamento e copia di oggetti utilizzando il caricamento in più parti.

Java

Nell'esempio di codice Java seguente viene interrotto un caricamento in più parti in corso.

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()));
Nota

Invece di interrompere un caricamento in più parti specifico, è possibile interrompere tutti i caricamenti in più parti avviati prima di un orario specifico che sono ancora in corso. Questa operazione di pulizia è utile per interrompere caricamenti in più parti obsoleti che sono stati avviati ma che non sono stati completati o interrotti. Per ulteriori informazioni, consulta Utilizzo degli SDK AWS (API di alto livello).

.NET

L'esempio di codice #C seguente mostra come interrompere un caricamento in più parti. Per un esempio in C# completo che include il codice seguente, consulta Utilizzo degli SDK AWS (API di basso livello).

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

Puoi anche interrompere tutti i caricamenti in più parti in corso che sono stati avviati prima di un determinato orario. Questa operazione di pulizia è utile per interrompere caricamenti in più parti che non sono stati completati o interrotti. Per ulteriori informazioni, consulta Utilizzo degli SDK AWS (API di alto livello).

PHP

Questo esempio mostra come utilizzare una classe dalla versione 3 di AWS SDK for PHP per interrompere un caricamento in più parti in corso. Si presume che siano già state seguite le istruzioni riportate in Utilizzo dell'AWS SDK for PHP ed esecuzione degli esempi in PHP e che AWS SDK for PHP sia stato correttamente installato. Nell'esempio il metodo abortMultipartUpload().

Per informazioni sull'esecuzione degli esempi di codice PHP in questa guida, consulta Esecuzione di esempi in 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, ]);

Per ulteriori informazioni sull'utilizzo di REST API per interrompere un caricamento in più parti, consulta abortMultiPartUpload nella Documentazione di riferimento delle API di Amazon Simple Storage Service.

Per ulteriori informazioni sull'utilizzo della AWS CLI per interrompere un caricamento in più parti, consulta abort-multipart-upload nel Riferimento ai comandi della AWS CLI.