Abbrechen eines mehrteiligen Uploads - Amazon Simple Storage Service

Willkommen im neuen Amazon-S3-Benutzerhandbuch! Das Amazon-S3-Benutzerhandbuch kombiniert Informationen und Anweisungen aus den drei eingestellten Handbüchern: Amazon-S3-Entwicklerhandbuch, Benutzerhandbuch der Amazon-S3-Konsole und Amazon S3 – Handbuch Erste Schritte.

Abbrechen eines mehrteiligen Uploads

Nachdem Sie einen mehrteiligen Upload initiiert haben, beginnen Sie mit dem Hochladen von Teilen. Amazon S3 speichert diese Teile, aber das Objekt wird erst dann aus den Teilen erstellt, nachdem Sie alle Teile hochgeladen und eine successful-Anfrage gesendet haben, um den mehrteiligen Upload abzuschließen (Sie sollten sicherstellen, dass Ihre Anfrage auf Abschluss des mehrteiligen Uploads erfolgreich ist). Nach dem Empfang der Anfrage auf Abschluss des Multipart-Uploads erzeugt Amazon S3 aus den Teilen ein Objekt. Wenn die Anforderung für den Abschluss des mehrteiligen Uploads nicht erfolgreich ist, fügt Amazon S3 die Teile nicht zusammen und erstellt daher auch kein Objekt.

Ihnen wird der gesamte Speicher in Rechnung gestellt, der mit hochgeladenen Teilen verknüpft ist. Weitere Informationen finden Sie unter Mehrteiliger Upload und Preise. Deshalb sollten Sie den mehrteiligen Upload abschließen, damit das Objekt erstellt wird, oder den Multipart-Upload abbrechen, um hochgeladene Teile zu entfernen.

Sie können einen laufenden mehrteiligen Upload in Amazon S3 mit der AWS-Befehlszeilenschnittstelle (AWS CLI), REST API oder AWS SDKs stoppen. Sie können einen unvollständigen mehrteiligen Upload auch mithilfe einer Bucket-Lifecycle-Richtlinie beenden.

Java

Die Klasse TransferManager bietet die Methode abortMultipartUploads, um laufende Multipart-Uploads zu stoppen. Ein Upload wird als laufend betrachtet, nachdem Sie ihn initiiert haben und bis er abgeschlossen ist oder Sie ihn abbrechen. Sie müssen einen Date-Wert angeben, dann bricht diese API alle mehrteiligen Uploads für diesen Bucket ab, die vor dem angegebenen Date initiiert wurden und noch laufen.

Die folgenden Aufgaben führen Sie durch die Verwendung von High-Level Java-Klassen für das Abbrechen mehrteiliger Uploads.

Abbruchprozess von mehrteiligen Uploads mithilfe des High-Level-API

1

Erstellen Sie eine Instance der TransferManager-Klasse.

2

Führen Sie die TransferManager.abortMultipartUploads-Methode aus, indem Sie den Bucket-Namen und einen Date-Wert übergeben.

Der folgende Java-Code bricht alle laufenden mehrteiligen Uploads ab, die vor mehr als einer Woche für einen bestimmten Bucket initiiert wurden. Anweisungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Testen der Java-Codebeispiele für 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(); } } }
Anmerkung

Sie können auch einen bestimmten mehrteiligen Upload abbrechen. Weitere Informationen finden Sie unter Verwenden der AWS SDKs (Low-Level-API).

.NET

Das folgende C#-Bespiel bricht alle laufenden mehrteiligen Uploads ab, die vor mehr als einer Woche für einen bestimmten Bucket initiiert wurden. Informationen zur Kompatibilität des Beispiels mit einer bestimmten Version des AWS SDK for .NET und Anleitungen zum Erstellen und Testen eines funktionierenden Beispiels finden Sie unter Ausführen der .NET-Codebeispiele für 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); } } } }
Anmerkung

Sie können auch einen bestimmten mehrteiligen Upload abbrechen. Weitere Informationen finden Sie unter Verwenden der AWS SDKs (Low-Level-API).

Durch Aufruf der Methode AmazonS3.abortMultipartUpload können Sie einen mehrteiligen Upload in Bearbeitung abbrechen. Diese Methode löscht alle Teile, die in Amazon S3 hochgeladen wurden, und gibt die Ressourcen frei. Sie müssen die Upload-ID, den Bucket-Namen und de Schlüsselnamen bereitstellen. Das folgende Java-Codebeispiel zeigt, wie ein laufender mehrteiliger Upload abgebrochen wird.

Um einen mehrteiligen Upload abzubrechen, stellen Sie die Upload-ID bereit sowie die Bucket- und Schlüsselnamen, die im Upload verwendet werden. Nachdem ein mehrteiliger Upload abgebrochen wurde, können Sie mit dieser Upload-ID keinen zusätzlichen Teile mehr hochladen. Weitere Informationen über mehrteilige Amazon S3-Uploads finden Sie unter Hochladen und Kopieren von Objekten mit mehrteiligen Uploads.

Java

Im folgenden Java-Codebeispiel wird ein laufender mehrteiliger Upload gestoppt.

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

Statt einen spezifischen mehrteiligen Upload können Sie auch alle Ihre mehrteiligen Uploads abbrechen, die vor einem bestimmten Zeitpunkt initiiert wurden und immer noch laufen. Diese Bereinigungsoperation ist praktisch, um alte mehrteilige Uploads abzubrechen, die Sie initiiert haben, aber die nicht abgeschlossen oder abgebrochen wurden. Weitere Informationen finden Sie unter Verwenden der AWS SDKs (High-Level-API).

.NET

Das folgende C#-Beispiel veranschaulicht, wie Sie einen mehrteiligen Upload abbrechen. Ein vollständiges C#-Beispiel mit dem folgenden Code finden Sie unter Verwenden der AWS SDKs (Low-Level-API).

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

Sie können auch alle laufenden mehrteiligen Uploads abbrechen, die vor einem bestimmten Zeitpunkt initiiert wurden. Diese Bereinigungsoperation ist praktisch, um mehrteilige Uploads abzubrechen, die nicht abgeschlossen oder abgebrochen wurden. Weitere Informationen finden Sie unter Verwenden der AWS SDKs (High-Level-API).

PHP

Dieses Beispiel zeigt, wie Sie eine Klasse aus Version 3 des AWS SDK for PHP verwenden, um einen laufenden mehrteiligen Upload abzubrechen. Es wird vorausgesetzt, dass Sie den Anleitungen für Verwenden des AWS SDK for PHP und Ausführen von PHP-Beispielen folgen und AWS SDK for PHP ordnungsgemäß installiert ist. Das Beispiel der Methode abortMultipartUpload().

Weitere Informationen zur Ausführung der PHP-Beispiele in dieser Anleitung finden Sie unter PHP-Beispiele ausführen.

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, ]);

Weitere Informationen zur Verwendung der REST API zum Abbrechen eines mehrteiligen Uploads finden Sie unter AbortMultipartUpload in der Amazon-Simple-Storage-Service-API-Referenz.

Weitere Informationen zur Verwendung der AWS CLI zum Stoppen eines mehrteiligen Uploads finden Sie unter abort-multipart-upload in der AWS-CLI-Befehlsreferenz.