Подтвердить что ты не робот

Как удалить или очистить старые файлы на S3?

Существуют ли существующие решения для удаления файлов старше x дней?

4b9b3361

Ответ 1

Недавно Amazon внедрила истечение срока действия объекта.

Amazon S3 объявляет об истечении срока действия объекта

Amazon S3 анонсировала новую функция "Истечение срока действия объекта", которая позволяет планировать удаление ваши объекты после заданного периода времени. Использование срока действия объекта планировать периодическое удаление объектов устраняет необходимость в вас для идентификации объектов для удаления и отправки запросов на удаление в Amazon S3.

Вы можете определить правила срока действия объекта для набора объектов в ваше ведро. Каждое правило истечения срока действия объекта позволяет указать префикс и срок действия в днях. Поле префикса (например, logs/) идентифицирует объект (ы), подлежащий правилу истечения, и период истечения указывает количество дней с даты создания (то есть возраста), после чего объект следует удалить. Как только объекты пройдут их срок действия, они будут поставлены в очередь для удаления. Вы не будет выставлен счет за хранение для объектов на срок годности.

Ответ 3

Вы можете использовать правила жизненного цикла AWS S3 для истечения срока действия файлов и их удаления. Все, что вам нужно сделать, это выбрать ведро, нажать кнопку "Добавить правила жизненного цикла" и настроить его, и AWS позаботится о них для вас.

Вы можете ссылаться на приведенное ниже сообщение в блоге от Joe для пошаговых инструкций. Это довольно просто:

https://www.joe0.com/2017/05/24/amazon-s3-how-to-delete-files-older-than-x-days/

Надеюсь, поможет!

Ответ 4

Вы можете использовать следующий сценарий Powershell для удаления объекта, срок действия которого истекает через x days.

[CmdletBinding()]
Param(  
  [Parameter(Mandatory=$True)]
  [string]$BUCKET_NAME,             #Name of the Bucket

  [Parameter(Mandatory=$True)]
  [string]$OBJ_PATH,                #Key prefix of s3 object (directory path)

  [Parameter(Mandatory=$True)]
  [string]$EXPIRY_DAYS             #Number of days to expire
)

$CURRENT_DATE = Get-Date
$OBJECTS = Get-S3Object $BUCKET_NAME -KeyPrefix $OBJ_PATH
Foreach($OBJ in $OBJECTS){
    IF($OBJ.key -ne $OBJ_PATH){
        IF(($CURRENT_DATE - $OBJ.LastModified).Days -le $EXPIRY_DAYS){
            Write-Host "Deleting Object= " $OBJ.key
            Remove-S3Object -BucketName $BUCKET_NAME -Key $OBJ.Key -Force
        }
    }
}