Gibt es bereits Lösungen zum Löschen von Dateien, die älter als x Tage sind?
Antworten:
Amazon hat kürzlich den Objektablauf eingeführt .
Amazon S3 kündigt Objektablauf an
Amazon S3 hat mit Object Expiration eine neue Funktion angekündigt, mit der Sie das Löschen Ihrer Objekte nach einem vordefinierten Zeitraum planen können. Durch die Verwendung von Object Expiration zum Planen des regelmäßigen Entfernens von Objekten müssen Sie keine Objekte zum Löschen identifizieren und Löschanforderungen an Amazon S3 senden.
Sie können Objektablaufregeln für eine Reihe von Objekten in Ihrem Bucket definieren. Mit jeder Objektablaufregel können Sie ein Präfix und einen Ablaufzeitraum in Tagen angeben. Das Präfixfeld (z. B.
logs/
) identifiziert die Objekte, die der Ablaufregel unterliegen, und der Ablaufzeitraum gibt die Anzahl der Tage ab dem Erstellungsdatum (dh dem Alter) an, nach denen Objekte entfernt werden sollen. Sobald die Objekte ihr Ablaufdatum überschritten haben, werden sie zum Löschen in die Warteschlange gestellt. Die Lagerung von Objekten am oder nach ihrem Ablaufdatum wird Ihnen nicht in Rechnung gestellt.
Hier finden Sie einige Informationen dazu ...
http://docs.amazonwebservices.com/AmazonS3/latest/dev/ObjectExpiration.html
Hoffe das hilft.
Sie können AWS S3-Lebenszyklusregeln verwenden, um die Dateien abzulaufen und zu löschen. Sie müssen lediglich den Bucket auswählen, auf die Schaltfläche "Lebenszyklusregeln hinzufügen" klicken und ihn konfigurieren. AWS kümmert sich dann um sie.
In dem folgenden Blog-Beitrag von Joe finden Sie schrittweise Anleitungen. Eigentlich ist es ganz einfach:
https://www.joe0.com/2017/05/24/amazon-s3-how-to-delete-files-older-than-x-days/
Ich hoffe es hilft!
So implementieren Sie es mithilfe einer CloudFormation-Vorlage:
JenkinsArtifactsBucket:
Type: "AWS::S3::Bucket"
Properties:
BucketName: !Sub "jenkins-artifacts"
LifecycleConfiguration:
Rules:
- Id: "remove-old-artifacts"
ExpirationInDays: 3
NoncurrentVersionExpirationInDays: 3
Status: Enabled
Dadurch wird eine Lebenszyklusregel erstellt, die von @Ravi Bhatt erläutert wird
Lesen Sie dazu mehr: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket-lifecycleconfig-rule.html
Funktionsweise der Verwaltung des Objektlebenszyklus: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
Sie können das folgende Powershell-Skript verwenden, um abgelaufene Objekte zu löschen 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