是否有现有的解决方案可以删除超过x天的所有文件?
答案 0 :(得分:77)
亚马逊最近推出了object expiration。
Amazon S3宣布对象过期
亚马逊S3宣布了新的 功能,对象到期,允许您安排删除 在预定义的时间段后您的对象。使用对象过期 安排定期删除对象消除了你的需要 识别要删除的对象并向Amazon提交删除请求 S3。
您可以为一组对象定义对象到期规则 你的水桶。每个对象过期规则允许您指定一个 前缀和有效期(以天为单位)。前缀字段(例如
logs/
)标识符合到期规则的对象,以及 到期时间指定从创建日期开始的天数 (即年龄)之后应移除的物体。一旦对象 超过他们的到期日期,他们将排队等待删除。您 我们不会对其上或之后的物品进行存储计费 到期日。
答案 1 :(得分:4)
以下是有关如何操作的一些信息......
http://docs.amazonwebservices.com/AmazonS3/latest/dev/ObjectExpiration.html
希望这有帮助。
答案 2 :(得分:1)
以下是如何使用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/AmazonS3/latest/dev/object-lifecycle-mgmt.html
答案 3 :(得分:0)
您可以使用AWS S3生命周期规则来使文件过期并删除它们。您所需要做的就是选择存储桶,单击“添加生命周期规则”按钮并对其进行配置,AWS会为您照顾它们。
您可以参考Joe的以下博客文章,以获取逐步说明。实际上这很简单:
https://www.joe0.com/2017/05/24/amazon-s3-how-to-delete-files-older-than-x-days/
希望有帮助!
答案 4 :(得分:0)
您可以使用以下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
}
}
}