Jawaban:
Amazon sekarang memiliki kemampuan untuk menetapkan kebijakan bucket untuk secara otomatis kedaluwarsa konten:
http://docs.amazonwebservices.com/AmazonS3/latest/UG/ObjectExpiration.html
Sementara itu Amazon telah memperkenalkan siklus hidup S3 (lihat posting blog pengantar Amazon S3 - Object Expiration ), di mana Anda dapat menentukan usia maksimum dalam beberapa hari untuk objek dalam ember - lihat Expiration Obyek untuk detail tentang penggunaannya melalui API S3 atau Manajemen AWS Menghibur.
Anda dapat menggunakan s3cmd untuk menulis skrip untuk dijalankan melalui bucket Anda dan menghapus file berdasarkan prasyarat.
Anda harus menulis beberapa kode (bash, python) di atasnya.
Anda dapat mengunduh s3cmd dari http://s3tools.org/s3cmd
skrip shell untuk menghapus ember lama menggunakan
sumber utilitas 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
hanya memberikan Video bukan sisanya.
Tidak, S3 hanya datastore. Anda harus menggunakan beberapa klien luar untuk menghapus file-file lama secara berkala.
Saya menemukan solusi hapus batch yang lebih cepat menggunakan 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";
}
Referensi untuk penghapusan batch /programming//a/41734090/1589444
Referensi untuk menangani file dengan spasi dengan case pass 100% /programming/36813327/how-to-display-only-files-from-aws-s3-ls-command