使用Powershell从s3下载最后24小时的文件



我有一个具有不同文件名的s3存储桶。我需要使用powershell将在过去24小时内创建或修改的特定文件(以impression开头的文件名(从s3 bucket下载到本地文件夹?

$items = Get-S3Object -BucketName $sourceBucket -ProfileName $profile -Region 'us-east-1' | Sort-Object LastModified -Descending | Select-Object -First 1 | select Key Write-Host "$($items.Length) objects to copy" $index = 1 $items | % { Write-Host "$index/$($items.Length): $($_.Key)" $fileName = $Folder + ".$($_.Key.Replace('/',''))" Write-Host "$fileName" Read-S3Object -BucketName $sourceBucket -Key $_.Key -File $fileName -ProfileName $profile -Region 'us-east-1' > $null $index += 1 } 

解决方法可能是打开访问日志,由于访问日志将包含时间戳,因此您可以获取过去24小时内的所有访问日志,消除重复的S3对象的重复,然后将其全部下载。

您可以在bucket设置中启用S3访问日志,日志将存储在另一个bucket中。

如果您最终为此编写了一个脚本,请记住,下载S3对象本质上会创建新的访问日志,使操作不可逆。

如果你想要一些新奇的东西,也许你甚至可以查询日志,也许可以使用AWS Athena进行重复数据消除。

最新更新