

# Eliminación de un solo objeto
<a name="delete-objects"></a>

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](DeletingObjects.md).

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 [Establecimiento de una configuración de S3 Lifecycle en un bucket](how-to-set-lifecycle-configuration-intro.md).

Para obtener información sobre las características y precios de Amazon S3, consulte [Precios de Amazon S3](https://aws.amazon.com/s3/pricing).

## Uso de la consola de S3
<a name="delete-object-console"></a>

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 Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general** o **Buckets de directorio**.

1. En la lista de buckets, seleccione el nombre del bucket que contiene el objeto que desea eliminar.

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

1. 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 Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

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

1. Seleccione los objetos que desea eliminar.

1. Elija **Mostrar versiones**.

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

1. 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 Consola de administración de AWS y abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. En el panel de navegación izquierdo, elija **Buckets de uso general**.

1. En la lista de buckets, seleccione el nombre del bucket que contiene el objeto que desea eliminar.

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

1. 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](troubleshooting-versioning.md#delete-objects-permanent).

## Mediante AWS CLI
<a name="delete-object-cli"></a>



Para eliminar un objeto por solicitud, utilice la API `DELETE`. Para obtener más información, consulte [DELETE Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html). Para obtener más información acerca del uso de la CLI para eliminar un objeto, vea [delete-object](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/s3api/delete-object.html).

# Uso de la API de REST
<a name="DeletingAnObjectsUsingREST"></a>

Puede utilizar los SDK de AWS 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](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) en la *Referencia de API de Amazon Simple Storage Service*. 

## Uso de los AWS SDK
<a name="DeletingOneObject"></a>

En los ejemplos siguientes se muestra cómo puede utilizar los SDK de AWS para eliminar un objeto de un bucket. Para obtener más información, consulte [DELETE Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) 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 [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md). 

Para ver más ejemplos y ejemplos en otros idiomas, consulte [Uso de `DeleteObject` con un SDK de AWS o la CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteObject_section.html) en la *Referencia de la API de Amazon S3*.

------
#### [ Java ]

Para eliminar objetos mediante el AWS SDK para Java, puede eliminar objetos tanto de un bucket con control de versiones como de un bucket sin control de versiones:
+ *Bucket sin control de versiones:* en la solicitud de eliminación, especifique solo la clave del objeto y no el ID de la versión.
+ *Bucket con control de versiones:* puede eliminar una versión de objeto concreta especificando el nombre de clave y 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`.

Para ver ejemplos de cómo eliminar un solo objeto con el AWS SDK para Java, consulte [Eliminar un objeto](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteObject_section.html) en la *Referencia de la API de Amazon S3*.

------
#### [ .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 [Retención de varias versiones de objetos con Control de versiones de S3](Versioning.md). 

**Example Eliminar un objeto de un bucket sin control de versiones**  
En el siguiente ejemplo de código C\$1 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 configurar y ejecutar ejemplos de código, consulte [Introducción al SDK de AWS para .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) en la *Guía para desarrolladores del SDK de AWS para .NET*.   

```
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);
            }
        }
    }
}
```

**Example Eliminar un objeto de un bucket con control de versiones**  
En el siguiente ejemplo de código C\$1 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).

1. 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.

1. 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 configurar y ejecutar ejemplos de código, consulte [Introducción al SDK de AWS para .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) en la *Guía para desarrolladores del SDK de AWS para .NET*.   

```
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 para 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](DeletingAnObjectsUsingREST.md). 

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](https://docs.aws.amazon.com/sdkforruby/api/index.html).

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 ]

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

------