Excluir objetos do Amazon S3 - Amazon Simple Storage Service

Excluir objetos do Amazon S3

Você pode excluir um ou mais objetos diretamente do Amazon S3 usando o console do Amazon S3, os AWS SDKs, a AWS Command Line Interface (AWS CLI) ou a API REST. Se estiver coletando arquivos de log, por exemplo, é uma boa ideia excluí-los quando eles não forem mais necessários. É possível configurar uma regra do Ciclo de Vida do S3 para excluir automaticamente determinados objetos, como arquivos de log.

Para excluir um objeto, você pode usar uma das seguintes operações de API:

  • Excluir um único objeto: o Amazon S3 fornece a operação de API DELETE (DeleteObject) que pode ser usada para excluir um objeto em uma única solicitação HTTP.

  • Excluir vários objetos: o Amazon S3 fornece a operação de API para exclusão de vários objetos (DeleteObjects) que pode ser usada para excluir até 1.000 objetos em uma única solicitação HTTP.

Ao excluir objetos de um bucket sem o versionamento habilitado, você fornece apenas o nome da chave de objeto. No entanto, ao excluir objetos de um bucket com o versionamento habilitado, você pode fornecer o ID da versão do objeto para excluir uma versão específica dele.

Práticas recomendadas a serem consideradas antes de excluir um objeto

Antes de excluir um objeto, considere as seguintes práticas recomendadas:

  • Habilite o versionamento do bucket. O Versionamento do S3 adiciona proteção contra solicitações DeleteObject simples para evitar exclusões acidentais. Para buckets com versionamento, se você excluir a versão atual de um objeto ou quando uma solicitação de exclusão não especificar um ID de versão específico, o Amazon S3 não excluirá permanentemente o objeto. Em vez disso, o S3 adiciona um marcador de exclusão, emitindo uma exclusão temporária do objeto. O marcador de exclusão então se torna a versão atual (ou a mais recente) do objeto com um novo ID de versão. Consulte mais informações em Deleting object versions from a versioning-enabled bucket.

  • Se você quiser excluir um grande número de objetos ou excluir objetos de forma programática com base na respectiva data de criação, defina uma configuração do Ciclo de Vida do S3 no bucket. Para monitorar essas exclusões, recomendamos que você use uma notificação de evento do Ciclo de Vida do S3. Quando você configura as notificações do Ciclo de Vida do S3, o tipo de evento s3:LifecycleExpiration:Delete notifica você quando um objeto em um bucket é excluído. Ele também notifica quando uma versão de objeto é excluída permanentemente por uma configuração do S3 Lifecycle. O tipo de evento s3:LifecycleExpiration:DeleteMarkerCreated notifica você quando o Ciclo de Vida do S3 cria um marcador de exclusão. Um marcador de exclusão é criado quando uma versão atual de um objeto em um bucket com versionamento é excluída.

  • Antes de fazer qualquer atualização na configuração do Ciclo de Vida do S3, confirme se ele concluiu as ações em todos os objetos pretendidos. Consulte mais informações na seção Atualizar, desabilitar ou excluir regras de ciclo de vida em Definir uma configuração de ciclo de vida em um bucket.

    nota

    As regras do Ciclo de Vida do S3 devem ser aplicadas ao subconjunto correto de objetos para evitar exclusões indesejadas. Você pode filtrar objetos por prefixos, tags de objeto ou tamanhos de objeto ao criar as regras de ciclo de vida.

  • Considere impedir que os usuários removam ou excluam objetos do bucket. Para restringir os usuários, você precisará negar explicitamente as permissões para as seguintes ações nas políticas de bucket do Amazon S3:

    • s3:DeleteObject, s3:DeleteObjectVersion (para controlar quem pode excluir objetos usando solicitações de API)

    • s3:PutLifecycleConfiguration (para controlar quem pode adicionar as regras de expiração do Ciclo de Vida do S3)

  • Considere usar o recurso Replicação do S3 para criar várias cópias de seus dados e replicá-los em vários locais ao mesmo tempo. Você pode escolher quantos buckets de destino forem necessários. Além disso, se um objeto for excluído acidentalmente, você ainda terá uma cópia dos dados.

Excluir objetos de um bucket com versionamento habilitado

Se o bucket tiver o versionamento habilitado, várias versões do mesmo objeto poderão existir no bucket. Ao trabalhar com buckets com versionamento habilitado, as operações de API Delete permitem as seguintes opções:

  • Especificar uma solicitação de exclusão não versionada: especifique somente a chave do objeto, e não o ID de versão. Nesse caso, o Amazon S3 cria um marcador de exclusão sobre a versão atual do objeto e retorna o ID de versão na resposta. Isso faz com que o objeto desapareça do bucket. Para obter informações sobre versionamento de objetos e sobre o conceito de marcador de exclusão, consulte Reter várias versões de objetos com o Versionamento do S3.

  • Especificar uma solicitação de exclusão com versionamento: especifique a chave e o ID da versão. Nesse caso, os seguintes resultados são possíveis:

    • Se o ID de versão for mapeado para uma versão de objeto específica, o Amazon S3 excluirá versão específica do objeto.

    • Se o ID de versão for mapeado para o marcador de exclusão de um objeto, o Amazon S3 excluirá o marcador de exclusão. Quando o marcador de exclusão é excluído, o objeto reaparece no bucket.

Excluir objetos de um bucket com versionamento suspenso

Se o bucket estiver com versionamento suspenso, as operações de API Delete se comportarão da mesma forma para buckets com versionamento habilitado (exceto quando a versão atual tiver um ID de versão nulo). Para ter mais informações, consulte Excluir objetos de buckets com versionamento suspenso.

Excluir objetos de um bucket sem versionamento

Se o bucket não tiver versionamento, será possível especificar a chave do objeto nas operações de API Delete, e o Amazon S3 excluirá permanentemente o objeto. Para evitar a exclusão permanente de um objeto, habilite o versionamento do bucket.

Excluir objetos de um bucket com MFA habilitada

Ao excluir objetos de um bucket habilitado para autenticação multifator (MFA, Multi-Factor Authentication), observe:

  • Se você fornecer um token de MFA inválido, a solicitação falhará sempre.

  • Se você tiver um bucket habilitado para MFA e fizer uma solicitação de exclusão em versões (fornecendo uma chave de objeto e um ID de versão), a solicitação falhará se você não fornecer um token de MFA válido. Além disso, ao usar a operação de API Delete de vários objetos em um bucket com MFA habilitada, se alguma exclusão for uma solicitação de exclusão com versionamento (se você especificar uma chave de objeto e um ID de versão), a solicitação inteira falhará se o token de MFA não for fornecido.

No entanto, nos seguintes casos a solicitação é bem-sucedida:

  • Se você tiver um bucket habilitado para MFA, fizer uma solicitação de exclusão não versionada (sem excluir um objeto versionado) e não fornecer um token de MFA, a exclusão será concluída.

  • Se você tiver uma solicitação de exclusão de vários objetos que especifica somente objetos não versionados a serem excluídos de um bucket habilitado para MFA e não fornecer um token de MFA, as exclusões serão feitas com êxito.

Para obter informações sobre a exclusão de MFA, consulte Configurando a exclusão de MFA.