Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Abbrechen eines mehrteiligen Uploads
Nachdem Sie einen mehrteiligen Upload initiiert haben, beginnen Sie mit dem Hochladen von Teilen. Amazon S3 speichert diese Teile und erstellt das Objekt erst, nachdem Sie alle Teile hochgeladen und eine Anfrage zum Abschluss des mehrteiligen Uploads gesendet haben. Nach dem Empfang der Anfrage auf Abschluss des Multipart-Uploads erzeugt Amazon S3 aus den Teilen ein Objekt. Wenn Sie die vollständige mehrteilige Upload-Anfrage nicht erfolgreich senden, baut S3 die Teile nicht zusammen und erstellt auch kein Objekt. Wenn Sie einen mehrteiligen Upload nach dem Hochladen von Teilen nicht abschließen möchten, sollten Sie den mehrteiligen Upload abbrechen.
Ihnen wird der gesamte Speicher in Rechnung gestellt, der mit hochgeladenen Teilen verknüpft ist. Es wird empfohlen, entweder den mehrteiligen Upload immer abzuschließen oder den mehrteiligen Upload zu beenden, um alle hochgeladenen Teile zu entfernen. Weitere Informationen zu Preisen erhalten Sie unter Mehrteiliger Upload und Preise.
Sie können einen unvollständigen mehrteiligen Upload auch mithilfe einer Bucket-Lebenszykluskonfiguration beenden. Weitere Informationen finden Sie unter Konfigurieren einer Bucket-Lebenszykluskonfiguration zum Löschen unvollständiger mehrteiliger Uploads.
Der folgende Abschnitt zeigt, wie Sie einen laufenden mehrteiligen Upload in Amazon S3 mithilfe von AWS Command Line Interface RESTAPI, oder beenden können. AWS SDKs
Weitere Informationen zur Verwendung von AWS CLI zum Beenden eines mehrteiligen Uploads finden Sie abort-multipart-uploadin der AWS CLI Befehlsreferenz.
Weitere Informationen zur Verwendung von REST API zum Stoppen eines mehrteiligen Uploads finden Sie AbortMultipartUploadin der Amazon Simple Storage Service API Reference.
- 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 geben einen Date
Wert an, und dadurch werden alle mehrteiligen Uploads für diesen Bucket API gestoppt, die vor dem angegebenen Wert initiiert wurden Date
und noch im Gange sind.
Die folgenden Aufgaben führen Sie durch die Verwendung von High-Level Java-Klassen für das Abbrechen mehrteiliger Uploads.
Prozess zum Stoppen API mehrteiliger Uploads auf hoher Ebene
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 Erste Schritte im AWS SDK for Java Entwicklerhandbuch.
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();
}
}
}
- .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 zum Einrichten und Ausführen der Codebeispiele finden Sie unter Erste Schritte mit dem AWS SDK for. NETim AWS SDKfür. NETLeitfaden für Entwickler.
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);
}
}
}
}
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 die 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()));
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 von AWS SDKs (auf hoher EbeneAPI).
- .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 von AWS SDKs (APILow-Level).
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 von AWS SDKs (auf hoher EbeneAPI).
- PHP
-
Dieses Beispiel zeigt, wie Sie eine Klasse aus Version 3 des AWS SDK for PHP
für PHP verwenden, um einen laufenden mehrteiligen Upload abzubrechen. Weitere Informationen zu AWS SDK for Ruby API finden Sie unter AWS SDKfor Ruby — Version 2. Das Beispiel der Methode abortMultipartUpload()
.
Weitere Informationen über die AWS SDK für Ruby API finden Sie unter AWS SDKfür Ruby — Version 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,
]);