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();
}
}
}
- .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);
}
}
}
}
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()));
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.