從 s3 儲存桶中取得特定日期的所有檔案(或檔案名稱)

從 s3 儲存桶中取得特定日期的所有檔案(或檔案名稱)

我需要從 s3 儲存桶中取得昨天的所有文件,當我知道文件名稱時,我知道如何在 CLI 中執行此操作: #aws s3 cp s3:{Path}/{FileName} {diretoryToCopyTo}

但我該如何對特定日期的文件執行此操作?無論透過什麼方法,只要取得特定日期的檔案名稱清單就可以了,不需要 CLI。

要點:該儲存桶有幾百萬個文件,因此我也在尋找一種具有成本效益的方法。

答案1

如果檔案名稱包含日期,您可以使用包含和排除過濾器: aws s3 cp s3:{path}/ {directoryToCopyTo} --exclude "*" --include "*2019-09-09*"

如果日期僅存在於檔案元資料中,則目前沒有伺服器端按日期過濾的方法。有一個 github 討論威爾斯魯賓有一個方法使用s3api

s3api這是使用和函數執行此操作的方法--query。這是在 OSX 上測試的:aws s3api list-objects --bucket "bucket-name" --query 'Contents[?LastModified>=2016-05-20][].{Key: Key}'然後您可以使用 jq 或 grep 進行過濾,以使用其他 s3api 函數進行處理。編輯:不確定為什麼它們沒有顯示,但是您必須使用反引號括住您正在查詢的日期

……但這並不會減少 api 呼叫的數量,因為過濾是在客戶端完成的。

相關內容