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

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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 multiparte in corso in Amazon S3 utilizzando AWS CLI(), AWS Command Line Interface l'API REST o gli SDK. AWS È inoltre possibile interrompere un caricamento in più parti incompleto utilizzando una configurazione del 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 funzionante, consulta Getting Started nella AWS SDK for Java Developer Guide.

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 AWS SDK (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 configurazione e l'esecuzione degli esempi di codice, consulta Getting Started with the AWS SDK for .NET nella AWS SDK for .NET Developer Guide.

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 AWS SDK (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 AWS SDK (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 AWS SDK (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 AWS SDK (API di alto livello).

PHP

Questo esempio mostra come utilizzare una classe della versione 3 di AWS SDK for PHP per interrompere un caricamento multiparte in corso. Per ulteriori informazioni sull'API AWS SDK for Ruby, AWS vai a SDK for Ruby - Versione 2. Nell'esempio il metodo abortMultipartUpload().

Per ulteriori informazioni sull'API AWS SDK for Ruby, AWS vai a SDK for Ruby - Versione 2.

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 dell'API REST per interrompere un caricamento AbortMultipartUploadin più parti, consulta Amazon Simple Storage Service API Reference.

Per ulteriori informazioni sull'utilizzo di AWS CLI per interrompere un caricamento in più parti, vedere abort-multipart-uploadnella Guida ai AWS CLI comandi.