Відповіді:
Тепер Amazon має можливість встановлювати політику ковша для автоматичного закінчення терміну дії вмісту:
http://docs.amazonwebservices.com/AmazonS3/latest/UG/ObjectExpiration.html
Амазонка тим часом представила життєві цикли S3 (див. Вступний пост у блозі Amazon S3 - Термін дії об'єкта ), де ви можете вказати максимальний вік у днях для об'єктів у відрі - детальну інформацію про його використання можна знайти у розділі " Expiration Object" за допомогою API S3 або управління AWS Консоль.
Ви можете використовувати s3cmd для написання сценарію для запуску через відро та видалення файлів на основі попередньої умови.
Вам потрібно буде написати якийсь код (bash, python) поверх нього.
Ви можете завантажити s3cmd з http://s3tools.org/s3cmd
скрипт оболонки для видалення старих відра з використанням утиліти s3cmd
:
http://shout.setfive.com/2011/12/05/deleting-files-older-than-specified-time-with-s3cmd-and-bash/
#!/bin/bash
# Usage: ./deleteOld "bucketname" "30 days"
s3cmd ls s3://$1 | while read -r line; do
createDate=`echo $line|awk {'print $1" "$2'}`
createDate=`date -d"$createDate" +%s`
olderThan=`date -d"-$2" +%s`
if [[ $createDate -lt $olderThan ]]
then
fileName=`echo $line|awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//'`
echo $fileName
if [[ $fileName != "" ]]
then
s3cmd del "$fileName"
fi
fi
done;
Video 1280x720 (2)13201781136780000000.mp4
просто дає відео не інше.
Ні, S3 - це просто сховище даних. Вам потрібно буде використовувати якийсь зовнішній клієнт, щоб періодично видаляти старі файли.
Я знайшов набагато швидший пакет видалення рішення за допомогою AWS cli
#!/usr/bin/env php
<?php
//remove files which were created 24 hrs ago
$fcmd = 'aws s3 ls s3://<bucket>/<prefix>/ | awk \'{$3=""; print $0}\'';//remove file size and handle file with spaces
exec($fcmd, $output, $return_var);
$seconds_24_hour = 24 * 60 * 60;
$file_deleted_count = 0;
if (!empty($output)) {
$deleted_keys = array();
foreach ($output as $file) {
$file_path = substr($file, 21);
$file_time_stamp = substr($file, 0, 19); //2017-09-19 07:59:41
if (time() - strtotime($file_time_stamp) > $seconds_24_hour) {
$deleted_keys[]["Key"] = "<prefix>/" . $file_path;
$file_deleted_count++;
}
}
if (!empty($deleted_keys)) {
$json_data_delete = array("Objects" => $deleted_keys);
echo $cmd = ("aws s3api delete-objects --bucket <bucket> --delete '" . json_encode($json_data_delete) . "'");
system($cmd);
}
echo "\n$file_deleted_count files deleted from content_media\n";
}
Посилання на пакетне видалення /programming//a/41734090/1589444
Посилання на обробку файлу з простором зі 100% пропуском /programming/36813327/how-to-display-only-files-from-aws-s3-ls-command