[英]Need to Edit command to Delete files in S3 bucket older than 90 days using PowerShell(90days instead of specifying date)
$bucketname = "bucketname" $key = aws s3api list-object-versions --bucket $bucketname --output json --query 'Versions[?LastModified<= 2022-08-26
].{VID:VersionId, Obj:Key }' | ConvertFrom-Json Write-host "Removing desired Objects From: $bucketname" -foregroundcolor red Foreach ($output in $key) { $delete = aws s3api delete-object --bucket $bucketname --key ($output).Obj - -version-id ($output).VID --输出文本 $output.Obj }
我没有 S3 来测试代码,但它应该满足您的需求。
$bucketname = "aws-a0189-use1-00-d-s3b-ia-test"
$date = (Get-Date).adddays(-90).ToString("yyyy-MM-dd") # 90 days ago
$query = 'Versions[?LastModified<=`' + $date + '`].{VID:VersionId, Obj:Key}'
$key = aws s3api list-object-versions --bucket $bucketname --output json --query $query | ConvertFrom-Json
Write-host "Removing desired Objects From: $bucketname" -foregroundcolor red
Foreach ($output in $key)
{
$delete = aws s3api delete-object --bucket $bucketname --key ($output).Obj --version-id ($output).VID --output text
$output.Obj
}
在我的代码中,我添加了第二行和第三行。 第二行 ("$date...") 获取几天前所需格式的日期 - 在本例中为 90 天。 第三行定义查询并在查询中插入日期。
第 4 行稍作更改,以包含 $query 变量
$bucketname = "bucket name" $date = (Get-Date).adddays(-2).ToString("yyyy-MM-dd") # 2 天前 $query = 'Versions[?LastModified<= ' + $date + '
].{VID:VersionId, Obj:Key}' $key = aws s3api list-object-versions --bucket $bucketname --output json --query $query | ConvertFrom-Json Write-host "Removing desired Objects From: $bucketname" -foregroundcolor red Foreach ($output in $key) { $delete = aws s3api delete-object --bucket $bucketname --key ($output).Obj - -输出文本 $output.Obj }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.