

# Excluir um único objeto
<a name="delete-objects"></a>

Você pode usar o console do Amazon S3 ou a API DELETE para excluir um único objeto existente de um bucket do S3. Para obter mais informações sobre como excluir objetos no Amazon S3, consulte [Excluir objetos do Amazon S3](DeletingObjects.md).

Como todos os objetos em seu bucket do S3 incorrem em custos de armazenamento, você deve excluir os objetos de que não precisa mais. Por exemplo, se estiver coletando arquivos de log, é uma boa ideia excluí-los quando não forem mais necessários. Você pode definir uma regra de ciclo de vida para excluir automaticamente objetos como arquivos de log. Para obter mais informações, consulte [Definir uma configuração do Ciclo de Vida do S3 em um bucket](how-to-set-lifecycle-configuration-intro.md).

Para obter informações sobre os recursos e a definição de preço do Amazon S3, consulte a [definição de preço do Amazon S3](https://aws.amazon.com/s3/pricing).

## Uso do console do S3
<a name="delete-object-console"></a>

Siga as etapas a seguir para usar o console do Amazon S3 a fim de excluir um único objeto de um bucket.

**Atenção**  
Quando você excluir permanentemente um objeto ou uma versão especificada do objeto no console do Amazon S3, a exclusão não poderá ser desfeita.

**Como excluir um objeto com versionamento habilitado ou suspenso**
**nota**  
 Se o ID da versão de um objeto em um bucket com versionamento suspenso estiver marcado como `NULL`, o S3 excluirá permanentemente o objeto, pois não existirão versões anteriores. No entanto, se um ID de versão válido estiver listado para o objeto em um bucket com versionamento suspenso, o S3 criará um marcador de exclusão para o objeto excluído, mantendo as versões anteriores do objeto. 

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets de uso geral** ou **Buckets de diretórios**.

1. Na lista de buckets, escolha o nome do bucket do qual deseja excluir um objeto.

1. Selecione o objeto e escolha **Excluir**.

1. Para confirmar a exclusão da lista de objetos em **Objetos especificados**, insira **delete** na caixa de texto **Excluir objetos?**.

**Como excluir permanente uma versão específica do objeto em um bucket habilitado para versionamento**
**Atenção**  
Quando você excluir permanentemente uma versão específica do objeto no Amazon S3, a exclusão não poderá ser desfeita.

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Na lista **Bucket name (Nome do bucket)**, escolha o nome do bucket do qual você deseja excluir um objeto.

1. Selecione o objeto que deseja excluir.

1. Escolha a opção **Mostrar versões**.

1. Selecione a versão do objeto e escolha **Excluir**.

1. Para confirmar a exclusão permanente das versões específicas do objeto em **Objetos especificados**, insira **Excluir permanentemente** na caixa de texto **Excluir objetos?**. O Amazon S3 excluirá permanentemente a versão específica do objeto.

**Como excluir permanentemente um objeto de um bucket do Amazon S3 que *não* tenha o versionamento habilitado**
**Atenção**  
Quando você excluir permanentemente um objeto no Amazon S3, a exclusão não poderá ser desfeita. Além disso, as exclusões são permanentes para todos os buckets que não tenham o versionamento habilitado.

1. Faça login no Console de gerenciamento da AWS e abra o console do Amazon S3 em [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. No painel de navegação à esquerda, escolha **Buckets de uso geral**.

1. Na lista de buckets, escolha o nome do bucket do qual deseja excluir um objeto.

1. Selecione o objeto e escolha **Excluir**.

1. Para confirmar a exclusão permanente do objeto listado em **Objetos especificados**, insira **Excluir permanentemente** na caixa de texto **Excluir objetos?**.

**nota**  
Se você enfrentar problemas ao excluir um objeto, consulte [Quero excluir permanentemente objetos com versionamento](troubleshooting-versioning.md#delete-objects-permanent).

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



Para excluir um objeto por solicitação, use a API `DELETE`. Para obter mais informações, consulte [DELETE Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html). Para obter mais informações sobre como usar a CLI para excluir um objeto, consulte [delete-object](https://awscli.amazonaws.com/v2/documentation/api/2.0.34/reference/s3api/delete-object.html).

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

Você pode usar os AWS SDKs para excluir um objeto. Contudo, se o seu aplicativo exigir, você pode enviar solicitações REST diretamente. Para obter mais informações, consulte [DELETE Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) na *Referência de APIs do Amazon Simple Storage Service*. 

## Uso da SDKs AWS
<a name="DeletingOneObject"></a>

Os exemplos a seguir mostram como você pode usar os AWS SDKs para excluir um objeto de um bucket. Para obter mais informações, acesse [DELETE Object](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html) na *Referência de APIs do Amazon Simple Storage Service*.

Se tiver habilitado o versionamento do S3 no bucket, você terá as seguintes opções:
+ Excluir uma versão específica do objeto ao especificar um ID de versão.
+ Excluir um objeto sem especificar um ID de versão, caso em que o Amazon S3 adicionará um marcador de exclusão para o objeto.

Para obter mais informações sobre o S3 Versioning, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md). 

Para obter mais exemplos e exemplos em outras linguagens, consulte [Use `DeleteObject` with an AWS SDK or CLI](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteObject_section.html) na *Referência de API do Amazon S3*.

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

Se quiser excluir objetos usando o AWS SDK para Java, exclua objetos de buckets com e sem versionamento:
+ *Buckets sem versionamento:* na solicitação de exclusão, especifique somente a chave do objeto e não um ID de versão.
+ *Bucket com versionamento:*: você pode excluir uma versão específica do objeto especificando o nome da chave e o ID da versão do objeto. Se não houver nenhuma outra versão do objeto, o Amazon S3 excluirá o objeto totalmente. Caso contrário, o Amazon S3 excluirá somente a versão especificada.
**nota**  
Você pode obter os IDs de versão de um objeto enviando uma solicitação `ListVersions`.

Para ver exemplos de como excluir um único objeto com o AWS SDK para Java, consulte [Delete an object](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_DeleteObject_section.html) na *Referência de API do Amazon S3*.

------
#### [ .NET ]

Os exemplos a seguir mostram como excluir um objeto de buckets com e sem versionamento. Para obter mais informações sobre o S3 Versioning, consulte [Reter várias versões de objetos com o Versionamento do S3](Versioning.md). 

**Example Excluir um objeto de um bucket sem versionamento**  
O exemplo do C\$1 a seguir exclui um objeto de um bucket sem versionamento. O exemplo pressupõe que os objetos não têm IDs de versão, portanto, você não especifica IDs de versão. Especifique somente a chave do objeto.   
Para obter informações sobre como configurar e executar exemplos de código, consulte [Conceitos básicos do AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) no *Guia do desenvolvedor do AWS SDK for .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 Excluir um objeto de um bucket com versionamento**  
O exemplo do C\$1 a seguir exclui um objeto de um bucket com versionamento. Ele exclui uma versão específica do objeto ao especificar o nome da chave e o ID de versão do objeto.   
O código realiza as seguintes tarefas:  

1. Permite o versionamento do S3 no bucket que você especificar (se o versionamento do S3 já estiver habilitado, isso não terá efeito).

1. Adiciona um objeto de exemplo ao bucket. Em resposta, o Amazon S3 retorna o ID de versão do objeto recém-adicionado. O exemplo usa esse ID de versão na solicitação de exclusão.

1. Exclui o objeto de exemplo ao especificar o nome da chave e um ID de versão do objeto.
**nota**  
Você também pode obter o ID de versão de um objeto enviando uma solicitação `ListVersions`.  

   ```
   var listResponse = client.ListVersions(new ListVersionsRequest { BucketName = bucketName, Prefix = keyName }); 
   ```
Para obter informações sobre como configurar e executar exemplos de código, consulte [Conceitos básicos do AWS SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html) no *Guia do desenvolvedor do AWS SDK for .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 ]

Este exemplo mostra como usar classes da versão 3 do AWS SDK para PHP para excluir um objeto de um bucket sem versionamento. Para obter informações sobre como excluir um objeto de um bucket com versões, consulte [Uso dos REST API](DeletingAnObjectsUsingREST.md). 

Para obter mais informações sobre a API do AWS SDK for Ruby, acesse [AWS SDK for Ruby Version 2](https://docs.aws.amazon.com/sdkforruby/api/index.html).

O exemplo de PHP a seguir exclui um objeto de um bucket. Como esse exemplo mostra como excluir objetos de bucket sem versionamento, ele oferece apenas o nome do bucket e a chave do objeto (não um ID de versão) na solicitação de exclusão. 

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

------