是否有现有的解决方案可以删除x天之前的任何文件?
Answers:
亚马逊最近引入了对象过期。
Amazon S3宣布对象到期
Amazon S3宣布了一项新功能“对象过期”,该功能使您可以在预定的时间段后安排删除对象。使用对象过期来计划定期删除对象,您无需识别要删除的对象并将删除请求提交给Amazon S3。
您可以为存储桶中的一组对象定义对象过期规则。每个对象到期规则都允许您指定前缀和有效期限(以天为单位)。前缀字段(例如
logs/
)标识受到期规则约束的对象,并且到期期限指定从创建日期(即年龄)开始的天数,之后应删除一个或多个对象。对象过期后,将排队等待删除。在对象到期之日或之后,无需为您支付存储费用。
这是一些有关如何做的信息...
http://docs.amazonwebservices.com/AmazonS3/latest/dev/ObjectExpiration.html
希望这可以帮助。
您可以使用AWS S3生命周期规则来使文件过期并删除它们。您所需要做的就是选择存储桶,单击“添加生命周期规则”按钮并对其进行配置,AWS会为您照顾它们。
您可以参考以下Joe的博客文章,以获取逐步说明。实际上很简单:
https://www.joe0.com/2017/05/24/amazon-s3-how-to-delete-files-older-than-x-days/
希望能帮助到你!
以下是使用CloudFormation模板实现它的方法:
JenkinsArtifactsBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Sub "jenkins-artifacts"
LifecycleConfiguration:
Rules:
- Id: "remove-old-artifacts"
ExpirationInDays: 3
NoncurrentVersionExpirationInDays: 3
Status: Enabled
如@Ravi Bhatt所述,这将创建生命周期规则
了解更多信息:https : //docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html
对象生命周期管理的工作方式:https : //docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
您可以使用以下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
}
}
}
s3cmd ls s3://mybucket/mypath/ |ruby -rdate -ne 'date, time, size, uri = $_.split; days = (Time.now - Date.parse(date).to_time) / 60/60/24; puts uri if days > 2' |xargs s3cmd del