Anulación de la carga multiparte
Comience a cargar las partes luego de iniciar una carga multiparte. Amazon S3 almacena estas partes y solo crea el objeto después de haya cargado todas las partes y enviado una solicitud para completar la carga multiparte. Al recibir la solicitud de carga multiparte completa, Amazon S3 combina las partes y crea un objeto. Si no envía correctamente la solicitud de carga multiparte completa, S3 no combina las partes y no crea un objeto. Si no desea completar una carga multiparte después de cargar las partes, debe anularla.
Se facturará todo el almacenamiento asociado con las partes cargadas. Se recomienda completar siempre la carga multiparte o detenerla con el fin de eliminar las partes cargadas. Para obtener más información sobre los precios, consulte Carga multiparte y precios.
También puede detener una carga multiparte incompleta mediante una configuración de ciclo de vida del bucket. Para obtener más información, consulte Configuración de una política de ciclo de vida del bucket para eliminar cargas multiparte incompletas.
En la siguiente sección se muestra cómo detener una carga multiparte en curso en Amazon S3 con la AWS Command Line Interface, la API de REST o los AWS SDK.
Para obtener más información acerca del uso de la AWS CLI a fin de detener una carga multiparte, consulte abort-multipart-upload en la Referencia de comandos de la AWS CLI.
Para obtener más información sobre el uso de la API de REST a fin de detener una carga multiparte, consulte AbortMultipartUpload en la Referencia de API de Amazon Simple Storage Service.
- Java
-
Para detener las cargas multiparte en curso mediante el SDK de AWS para Java, puede anular las cargas que se iniciaron antes de una fecha específica y que aún están en curso. Una carga se considera en curso después de que la inicia y hasta que la completa o detiene.
Para detener las cargas multiparte, puede hacer lo siguiente:
1 |
Cree una instancia de S3Client. |
2 |
Utilice los métodos de cancelación del cliente al pasar el nombre del bucket y otros parámetros necesarios. |
Para ver ejemplos de cómo abortar cargas multiparte con el SDK de AWS para Java, consulte Cancelar una carga multiparte en la Referencia de la API de Amazon S3.
- .NET
-
En el siguiente ejemplo de código C# se detienen todas las cargas multiparte en curso que se iniciaron en un bucket específico hace una semana. Para obtener información acerca de cómo configurar y ejecutar ejemplos de código, consulte Introducción al SDK de AWS para .NET en la Guía para desarrolladores del SDK de AWS para .NET.
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);
}
}
}
}
Puede detener una carga multiparte en curso si llama al método AmazonS3.abortMultipartUpload
. Este método elimina cualquier parte cargada Amazon S3 y libera los recursos. Deberá proporcionar el ID de carga, el nombre del bucket y el nombre de clave. En el siguiente ejemplo de código Java se muestra cómo detener una carga multiparte en curso.
Para detener una carga multiparte, debe proporcionar el ID de carga y los nombres de clave y bucket que se usaron en la carga. Luego de haber detenido una carga multiparte, no puede usar el ID de carga para cargar partes adicionales. Para obtener más información acerca de las cargas multiparte en Amazon S3, consulte Carga y copia de objetos con la carga multiparte en Amazon S3.
- Java
-
Para detener una carga multiparte específica en curso mediante el SDK de AWS para Java, puede usar la API de bajo nivel para abortar la carga proporcionando el nombre del bucket, la clave de objeto y el ID de carga.
En lugar de abortar una carga multiparte específica, puede detener todas las cargas multiparte iniciadas antes de un periodo de tiempo específico que siguen en proceso. Esta operación de limpieza es útil para detener las cargas multiparte antiguas que inició pero que no se completaron o detuvieron. Para obtener más información, consulte Uso de los AWS SDK (API de alto nivel).
Para ver ejemplos de cómo abortar una carga multiparte específica con el SDK de AWS para Java, consulte Cancelar una carga multiparte en la Referencia de la API de Amazon S3.
- .NET
-
En el siguiente ejemplo en C# se muestra cómo detener una carga multiparte. Para ver una muestra completa de código C# que incluye el código siguiente, consulte Uso de los AWS SDK (API de bajo nivel).
AbortMultipartUploadRequest abortMPURequest = new AbortMultipartUploadRequest
{
BucketName = existingBucketName,
Key = keyName,
UploadId = initResponse.UploadId
};
await AmazonS3Client.AbortMultipartUploadAsync(abortMPURequest);
También puede anular todas las cargas multiparte en curso que se iniciaron antes de un periodo de tiempo específico. Esta operación de limpieza resulta útil para anular cargas multiparte que no se finalizaron o que se anularon. Para obtener más información, consulte Uso de los AWS SDK (API de alto nivel).
- PHP
-
En este ejemplo, se muestra cómo utilizar una clase de la versión 3 de AWS SDK para PHP a fin de anular una carga multiparte que está en curso. Para obtener más información acerca de la API del SDK de AWS para Ruby, consulte SDK de AWS para Ruby, versión 2. El ejemplo es el método abortMultipartUpload()
.
Para obtener más información acerca de la API del SDK de AWS para Ruby, consulte SDK de AWS para Ruby, versión 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,
]);