Eliminación de un solo objeto - Amazon Simple Storage Service

Eliminación de un solo objeto

Puede utilizar la consola de Amazon S3 o la API DELETE para eliminar un solo objeto existente de un bucket de S3. Para obtener más información sobre la eliminación de objetos en Amazon S3, consulte Eliminación de objetos de Amazon S3.

Debido a que todos los objetos en el bucket de S3 generan costos de almacenamiento, debe eliminar los objetos cuando ya no los necesita. Por ejemplo, si recopila archivos de registro, es recomendable eliminarlos cuando ya no sean necesarios. También puede configurar una regla de ciclo de vida para eliminar los objetos, como los archivos de registro, de manera automática. Para obtener más información, consulte Configurar el ciclo de vida de un bucket.

Para obtener información sobre las características y precios de Amazon S3, consulte Precios de Amazon S3.

Siga estos pasos para utilizar la consola de Amazon S3 a fin de eliminar un solo objeto de un bucket.

aviso

Si elimina permanentemente un objeto o una versión específica del objeto en la consola de Amazon S3, la eliminación no se puede deshacer.

Cómo eliminar un objeto que tiene el control de versiones activado o suspendido
nota

Si el ID de versión de un objeto de un bucket con control de versiones suspendido está marcado como NULL, S3 elimina el objeto de forma permanente, ya que no existen versiones anteriores. Sin embargo, si aparece un ID de versión válido para el objeto en un bucket con control de versiones suspendido, S3 crea un marcador de eliminación para el objeto eliminado y, al mismo tiempo, conserva las versiones anteriores del objeto.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Bucket name (Nombre del bucket), seleccione el nombre del bucket que contiene el objeto que desea eliminar.

  3. Seleccione el objeto y, a continuación, elija Eliminar.

  4. Para confirmar la eliminación de la lista de objetos en Objetos especificados en el cuadro de texto ¿Eliminar objetos?, introduzca delete.

Cómo eliminar una versión específica del objeto en un bucket con control de versiones de forma definitiva
aviso

Si elimina una versión específica del objeto de forma permanente en Amazon S3, la eliminación no se puede deshacer.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Bucket name (Nombre del bucket), seleccione el nombre del bucket que contiene el objeto que desea eliminar.

  3. Seleccione los objetos que desea eliminar.

  4. Elija Mostrar versiones.

  5. Seleccione la versión del objeto y, a continuación, elija Eliminar.

  6. Para confirmar la eliminación definitiva de la versión del objeto enumerada en Objetos especificados en el cuadro de texto ¿Eliminar objetos?, introduzca Eliminar definitivamente. Amazon S3 eliminará la versión del objeto específica de forma definitiva.

Cómo eliminar un objeto de forma definitiva de un bucket de Amazon S3 que no tiene activado el control de versiones
aviso

Si elimina un objeto de forma definitiva en Amazon S3, la eliminación no se puede deshacer. Además, en el caso de los buckets que no tengan el control de versiones activado, las eliminaciones son definitivas.

  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista Bucket name (Nombre del bucket), seleccione el nombre del bucket que contiene el objeto que desea eliminar.

  3. Seleccione el objeto y, a continuación, elija Eliminar.

  4. Para confirmar la eliminación definitiva objeto enumerado en Objetos especificados en el cuadro de texto ¿Eliminar objetos?, introduzca Eliminar definitivamente.

nota

Si tiene problemas para eliminar el objeto, consulte Quiero eliminar los objetos versionados de forma permanente.

En los ejemplos siguientes se muestra cómo puede utilizar los AWS SDK para eliminar un objeto de un bucket. Para obtener más información, consulte DELETE Object en la Referencia de API de Amazon Simple Storage Service

Si el bucket tiene habilitado Control de versiones de S3, tiene las siguientes opciones:

  • Eliminar una versión específica del objeto especificando un ID de versión.

  • Eliminar un objeto sin especificar un ID de versión. En ese caso, Amazon S3 agrega un marcador de eliminación al objeto.

Para obtener más información sobre el control de versiones de S3, consulte Usar el control de versiones en buckets de S3.

Java
ejemplo Ejemplo 1: eliminar un objeto (bucket sin control de versiones)

En el siguiente ejemplo se asume que el bucket no tiene habilitado el control de versiones y que el objeto no tiene ID de versión. En la solicitud de eliminación, especificará solo la clave del objeto y no el ID de versión.

Para obtener instrucciones sobre la creación y comprobación de una muestra funcional, consulte Prueba de los ejemplos de código de Java de Amazon S3.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.DeleteObjectRequest; import java.io.IOException; public class DeleteObjectNonVersionedBucket { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ****"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); s3Client.deleteObject(new DeleteObjectRequest(bucketName, keyName)); } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
ejemplo Ejemplo 2: eliminar un objeto (bucket con control de versiones)

En el siguiente ejemplo se elimina un objeto de un bucket con control de versiones. En el ejemplo se elimina una versión del objeto concreta especificando el nombre de clave y el ID de versión del objeto.

En el ejemplo se realiza lo siguiente:

  1. Añadir un objeto de muestra al bucket. Amazon S3 devuelve un ID de versión del objeto recién añadido. El ejemplo utiliza este ID de versión en la solicitud de eliminación.

  2. Eliminar la versión del objeto especificando tanto el nombre de clave como el ID de versión del objeto. Si no hay otras versiones de ese objeto, Amazon S3 elimina el objeto en su totalidad. De lo contrario, Amazon S3 solo elimina la versión especificada.

    nota

    Puede obtener ID de versiones de un objeto con la solicitud ListVersions.

import com.amazonaws.AmazonServiceException; import com.amazonaws.SdkClientException; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.BucketVersioningConfiguration; import com.amazonaws.services.s3.model.DeleteVersionRequest; import com.amazonaws.services.s3.model.PutObjectResult; import java.io.IOException; public class DeleteObjectVersionEnabledBucket { public static void main(String[] args) throws IOException { Regions clientRegion = Regions.DEFAULT_REGION; String bucketName = "*** Bucket name ***"; String keyName = "*** Key name ****"; try { AmazonS3 s3Client = AmazonS3ClientBuilder.standard() .withCredentials(new ProfileCredentialsProvider()) .withRegion(clientRegion) .build(); // Check to ensure that the bucket is versioning-enabled. String bucketVersionStatus = s3Client.getBucketVersioningConfiguration(bucketName).getStatus(); if (!bucketVersionStatus.equals(BucketVersioningConfiguration.ENABLED)) { System.out.printf("Bucket %s is not versioning-enabled.", bucketName); } else { // Add an object. PutObjectResult putResult = s3Client.putObject(bucketName, keyName, "Sample content for deletion example."); System.out.printf("Object %s added to bucket %s\n", keyName, bucketName); // Delete the version of the object that we just created. System.out.println("Deleting versioned object " + keyName); s3Client.deleteVersion(new DeleteVersionRequest(bucketName, keyName, putResult.getVersionId())); System.out.printf("Object %s, version %s deleted\n", keyName, putResult.getVersionId()); } } catch (AmazonServiceException e) { // The call was transmitted successfully, but Amazon S3 couldn't process // it, so it returned an error response. e.printStackTrace(); } catch (SdkClientException e) { // Amazon S3 couldn't be contacted for a response, or the client // couldn't parse the response from Amazon S3. e.printStackTrace(); } } }
.NET

En el siguiente ejemplo se muestra cómo eliminar un objeto tanto de un bucket con control de versiones como de un bucket sin control versiones. Para obtener más información sobre el control de versiones de S3, consulte Usar el control de versiones en buckets de S3.

ejemplo Eliminar un objeto de un bucket sin control de versiones

En el siguiente ejemplo de código C# se elimina un objeto de un bucket sin control de versiones. En el ejemplo se supone que los objetos no tienen ID de versión, por lo que no tiene que especificar los ID de versión. Especifique solo la clave del objeto.

Para obtener información acerca de cómo crear y probar una muestra funcional, consulte Ejecución de ejemplos de código .NET de Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DeleteObjectNonVersionedBucketTest { private const string bucketName = "*** bucket name ***"; private const string keyName = "*** object key ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); DeleteObjectNonVersionedBucketAsync().Wait(); } private static async Task DeleteObjectNonVersionedBucketAsync() { try { var deleteObjectRequest = new DeleteObjectRequest { BucketName = bucketName, Key = keyName }; Console.WriteLine("Deleting an object"); await client.DeleteObjectAsync(deleteObjectRequest); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when deleting an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting an object", e.Message); } } } }
ejemplo Eliminar un objeto de un bucket con control de versiones

En el siguiente ejemplo de código C# se elimina un objeto de un bucket con control de versiones. Se elimina una versión de objeto concreta especificando el nombre de clave y el ID de versión del objeto.

El código realiza las siguientes tareas:

  1. Habilita el control de versiones de S3 en un bucket que especifique (si el control de versiones de S3 ya está habilitado, esto no tiene efecto).

  2. Añadir un objeto de muestra al bucket. Como respuesta, Amazon S3 devuelve un ID de versión del nuevo objeto añadido. El ejemplo utiliza este ID de versión en la solicitud de eliminación.

  3. Elimina el objeto de muestra especificando tanto el nombre de clave como el ID de versión del objeto.

    nota

    También puede obtener el ID de versión de un objeto con la solicitud ListVersions.

    var listResponse = client.ListVersions(new ListVersionsRequest { BucketName = bucketName, Prefix = keyName });

Para obtener información acerca de cómo crear y probar una muestra funcional, consulte Ejecución de ejemplos de código .NET de Amazon S3.

using Amazon; using Amazon.S3; using Amazon.S3.Model; using System; using System.Threading.Tasks; namespace Amazon.DocSamples.S3 { class DeleteObjectVersion { private const string bucketName = "*** versioning-enabled bucket name ***"; private const string keyName = "*** Object Key Name ***"; // Specify your bucket region (an example region is shown). private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2; private static IAmazonS3 client; public static void Main() { client = new AmazonS3Client(bucketRegion); CreateAndDeleteObjectVersionAsync().Wait(); } private static async Task CreateAndDeleteObjectVersionAsync() { try { // Add a sample object. string versionID = await PutAnObject(keyName); // Delete the object by specifying an object key and a version ID. DeleteObjectRequest request = new DeleteObjectRequest { BucketName = bucketName, Key = keyName, VersionId = versionID }; Console.WriteLine("Deleting an object"); await client.DeleteObjectAsync(request); } catch (AmazonS3Exception e) { Console.WriteLine("Error encountered on server. Message:'{0}' when deleting an object", e.Message); } catch (Exception e) { Console.WriteLine("Unknown encountered on server. Message:'{0}' when deleting an object", e.Message); } } static async Task<string> PutAnObject(string objectKey) { PutObjectRequest request = new PutObjectRequest { BucketName = bucketName, Key = objectKey, ContentBody = "This is the content body!" }; PutObjectResponse response = await client.PutObjectAsync(request); return response.VersionId; } } }
PHP

En este ejemplo, se muestra cómo utilizar las clases de la versión 3 de AWS SDK for PHP a fin de eliminar un objeto de un bucket sin control de versiones. Para obtener información acerca de la eliminación de un objeto de un bucket con control de versiones, consulte Uso de la API de REST.

En este ejemplo, se da por sentado que está familiarizado con las instrucciones para Uso del AWS SDK for PHP y ejecución de ejemplos de PHP y ha instalado AWS SDK for PHP adecuadamente. Para obtener información acerca de la ejecución de ejemplos de PHP en esta guía, consulte Ejecución de ejemplos de PHP.

En el siguiente ejemplo de PHP se elimina un objeto de un bucket. Como este ejemplo muestra cómo eliminar objetos de buckets sin control de versiones, proporciona solo el nombre del bucket y la clave del objeto (no un ID de versión) en la solicitud de eliminación.

<?php require 'vendor/autoload.php'; use Aws\S3\S3Client; use Aws\S3\Exception\S3Exception; $bucket = '*** Your Bucket Name ***'; $keyname = '*** Your Object Key ***'; $s3 = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1' ]); // 1. Delete the object from the bucket. try { echo 'Attempting to delete ' . $keyname . '...' . PHP_EOL; $result = $s3->deleteObject([ 'Bucket' => $bucket, 'Key' => $keyname ]); if ($result['DeleteMarker']) { echo $keyname . ' was deleted or does not exist.' . PHP_EOL; } else { exit('Error: ' . $keyname . ' was not deleted.' . PHP_EOL); } } catch (S3Exception $e) { exit('Error: ' . $e->getAwsErrorMessage() . PHP_EOL); } // 2. Check to see if the object was deleted. try { echo 'Checking to see if ' . $keyname . ' still exists...' . PHP_EOL; $result = $s3->getObject([ 'Bucket' => $bucket, 'Key' => $keyname ]); echo 'Error: ' . $keyname . ' still exists.'; } catch (S3Exception $e) { exit($e->getAwsErrorMessage()); }
Javascript

En este ejemplo se muestra cómo utilizar la versión 3 de AWS SDK for JavaScript para eliminar un objeto. Para obtener más información acerca de AWS SDK for JavaScript, consulte Mediante AWS SDK for JavaScript.

import { DeleteObjectCommand } from "@aws-sdk/client-s3"; import { s3Client } from "./libs/s3Client.js" // Helper function that creates Amazon S3 service client module. export const bucketParams = { Bucket: "BUCKET_NAME", Key: "KEY" }; export const run = async () => { try { const data = await s3Client.send(new DeleteObjectCommand(bucketParams)); console.log("Success. Object deleted.", data); return data; // For unit tests. } catch (err) { console.log("Error", err); } }; run();

Para eliminar un objeto por solicitud, utilice la API DELETE. Para obtener más información, consulte DELETE Object. Para obtener más información acerca del uso de la CLI para eliminar un objeto, vea delete-object.

Puede utilizar los AWS SDK para eliminar un objeto. Sin embargo, si su aplicación lo requiere, puede enviar solicitudes REST directamente. Para obtener más información, consulte DELETE Object en la Referencia de API de Amazon Simple Storage Service.