X日より古いファイルを削除する既存のソリューションはありますか?
Amazonは最近、 オブジェクトの有効期限 を導入しました。
Amazon S3がオブジェクトの有効期限を発表
Amazon S3は、事前定義された期間の経過後にオブジェクトの削除をスケジュールできる新しい機能であるObject Expirationを発表しました。オブジェクトの有効期限を使用してオブジェクトの定期的な削除をスケジュールすると、削除するオブジェクトを特定し、削除リクエストをAmazon S3に送信する必要がなくなります。
バケット内のオブジェクトのセットに対してオブジェクト有効期限ルールを定義できます。各オブジェクトの有効期限ルールでは、プレフィックスと有効期限を日単位で指定できます。プレフィックスフィールド(例:
logs/
)は、有効期限ルールの対象となるオブジェクトを識別し、有効期限は、オブジェクトが削除されるまでの作成日(つまり年齢)からの日数を指定します。オブジェクトが有効期限を過ぎると、削除のためにキューに入れられます。有効期限以降のオブジェクトの保存料は請求されません。
これを行う方法に関する情報があります...
http://docs.amazonwebservices.com/AmazonS3/latest/dev/ObjectExpiration.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
}
}
}
AWS S3ライフサイクルルールを使用して、ファイルを期限切れにして削除できます。バケットを選択し、[ライフサイクルルールの追加]ボタンをクリックして設定するだけで、AWSが自動的に処理します。
ステップごとの手順については、Joeの以下のブログ投稿を参照してください。実際には非常に簡単です:
https://www.joe0.com/2017/05/24/Amazon-s3-how-to-delete-files-older-than-x-days/
それが役に立てば幸い!