我似乎沒有找到任何關于根據物件大小洗掉 S3 物件的檔案。例如,如果物件大小小于 5B,則將其洗掉。
uj5u.com熱心網友回復:
根據您的評論,如果物件小于給定大小,您似乎希望在創建后立即洗掉它們。
為此,您將:
- 創建AWS Lambda 函式
- 配置 S3 存盤桶以在創建物件時觸發Lambda 函式
Lambda 函式將傳遞剛剛創建的物件的 Bucket 和 Key。然后它可以呼叫HeadObject以獲取物件的大小。如果它小于所需的大小,則可以呼叫DeleteObject. 確保回圈遍歷所有傳入的記錄,因為可以使用多個輸入物件呼叫一個 Lambda 函式。
如果您有要對其執行此操作的現有物件,并且由于您提到有“超過 100 萬個物件”,您可以使用Amazon S3 Inventory,它可以提供列出所有物件的每日或每周 CSV 檔案,包括它們的尺寸。您可以撰寫一個程式,將該檔案用作輸入并呼叫DeleteObjects一次最多洗掉 1000 個物件。
uj5u.com熱心網友回復:
是的,可以根據大小洗掉 S3 物件。
一種解決方法是通過 AWS CLI 獲取 S3 存盤桶的物件大小(您可以使用 cli 或 boto3 )并執行cron作業,如果物件大小小于 5B,則該作業將在為真時執行條件。
uj5u.com熱心網友回復:
該DeleteObject()API呼叫不接受引數,如尺寸或ModifiedDate。
相反,您必須提供要洗掉的物件串列。
如果您希望根據物件的大小洗掉物件,典型的模式是:
- 呼叫
ListObjets()以獲取存盤桶中的物件串列(以及可選的給定前綴) - 在您的代碼中,遍歷回傳的資訊并舉例說明物件大小。如果大小比所需的小/大,則將
Key(檔案名)添加到陣列中 - 呼叫
DeteleObject(),傳遞要洗掉的 Key 陣列
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/362881.html
標籤:亚马逊网络服务 亚马逊-s3 aws-cli aws-java-sdk
