目前有一些檔案正在上傳,它們被損壞了。它們的檔案大小為 0 位元組。請問如何查詢我的s3存盤桶并按特定大小過濾,我試圖查詢位元組何時為0?

目前我有兩個疑問。
第一個以遞回方式列出存盤桶中的所有檔案,但沒有排序。
aws s3 ls s3://testbucketname --recursive --summarize --human-readable
第二種排序但僅在提供前綴時,在我的情況下,前綴是檔案夾名稱。我當前的存盤桶結構如下{accountId}/{filename}
aws s3api list-objects-v2 --max-items 10 --bucket testbucketname --prefix "30265" --query "sort_by(Contents,&Size)"
30265 是 accountId/檔案夾名稱。當沒有提供前綴時,排序就不能正常作業。
任何幫助將不勝感激。
此查詢適用于過濾作為字串的名稱
aws s3api list-objects --bucket testbucketname --query "Contents[?contains(Key, '.jpg')]"
不幸的是,我不能使用 contains 作為 Size 并且沒有等號。
uj5u.com熱心網友回復:
您可以使用該--query邏輯將串列物件本地過濾為僅那些零位元組大的物件:
aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`]'
或者,如果您只想查看沒有其他元資料的鍵串列,您可以進一步過濾串列:
aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`].Key'
(對于這兩者,在 Windows 上運行時將外部替換為。')"
此外,如果目標是洗掉這些物件,您可以使用 jq 和子shell 來構造洗掉目標物件的查詢:
aws s3api delete-objects --bucket example-bucket --delete \
"$(aws s3api list-objects-v2 --bucket example-bucket --query 'Contents[?Size==`0`].Key' |\
jq '{"Objects": map({"Key":.})}')"
沒有直接的方法可以使用 Windows 的命令解釋器執行這種相同的構造。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/471802.html
上一篇:北斗GPS校時器,衛星時鐘服務器,NTP網路授時服務器
下一篇:如何配置S3來托管私有靜態網站
