Câu trả lời:
Amazon hiện có khả năng thiết lập các chính sách xô để tự động hết hạn nội dung:
http://docs.amazonwebservice.com/AmazonS3/latest/UG/ObjectExpirst.html
Trong khi đó, Amazon đã giới thiệu vòng đời S3 (xem bài đăng trên blog giới thiệu Amazon S3 - Hết hạn đối tượng ), trong đó bạn có thể chỉ định tuổi tối đa tính bằng ngày cho các đối tượng trong một nhóm - xem Chi tiết hết hạn đối tượng sử dụng thông qua API S3 hoặc Quản lý AWS Bảng điều khiển.
Bạn có thể sử dụng s3cmd để viết một tập lệnh để chạy qua nhóm của bạn và xóa các tệp dựa trên điều kiện tiên quyết.
Bạn sẽ cần phải viết một số mã (bash, python) lên trên nó.
Bạn có thể tải xuống s3cmd từ http://s3tools.org/s3cmd
shell script để xóa các thùng cũ bằng
nguồn tiện ích 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
chỉ cung cấp cho Video chứ không phải phần còn lại.
Không, S3 chỉ là một kho dữ liệu. Bạn sẽ cần sử dụng một số máy khách bên ngoài để định kỳ xóa các tệp cũ.
Tôi tìm thấy giải pháp xóa hàng loạt nhanh hơn bằng cách sử dụng 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";
}
Tham khảo để xóa hàng loạt /programming//a/41734090/1589444
Tham chiếu để xử lý tệp có dung lượng với 100% trường hợp vượt qua /programming/36813327/how-to-display-only-files-from-aws-s3-ls-command