我發現 Amazon CloudWatch 指標與用於 Amazon Simple Storage Service (Amazon S3) 的 AWS Command Line Interface (AWS CLI) 儲存指標之間存在差異。為什麼兩個來源之間報告的儲存大小差異如此大?
簡短描述
如果 Amazon S3 的 CloudWatch 儲存指標與使用 AWS CLI 計算的指標之間存在差異,請檢查以下內容:
- 物件版本控制。
**注意:**Amazon S3 中的物件版本控制功能會在您的儲存貯體中保留物件的多個版本。預設情況下,Amazon S3 物件版本控制在儲存貯體上為停用,您必須明確啟用此功能。此外,AWS CLI 儲存指標計算只計算存放在儲存貯體中每個物件的最新版本和大小。
- 不完整的分段上傳。
**注意:**不完整的分段上傳未包含在 AWS CLI 儲存計算中,而是當成 CloudWatch 指標中的儲存進行計算。
若要確定報告存有差異的原因,請檢查是否已啟用物件版本控制,並查找儲存貯體中是否存在分段上傳。這兩個因素可能會導致 CloudWatch 中計算出的儲存貯體大小的值變大。如需詳細資訊,請參閲 Amazon S3 CloudWatch 儲存貯體每日儲存指標。
**提示:**如果 Amazon S3 中確實有不完整的分段上傳,應考慮建立生命週期組態規則。此生命週期組態規則會自動清理任何不完整的部分,從而降低資料儲存成本。請注意,生命週期規則以異步方式運作,因此操作可能會有延遲。但是,一旦物件被標記為刪除,即使物件尚未刪除,您也無需支付儲存費用。
此外,Amazon S3 監控指標為每天記錄,因此顯示的可能不是最新資訊。同時,CloudWatch 會即時監控您的 AWS 資源和應用程式。
解決方案
CloudWatch 中的每日儲存指標
在 CloudWatch 中,BucketSizeBytes 指標會擷取所有 Amazon S3 和 Amazon S3 Glacier 儲存類型、物件版本和任何不完整的分段上傳。此值的計算方法是將所有物件大小、儲存貯體中的中繼資料 (當前和非當前物件),以及所有不完整的分段上傳大小加總。例如,BucketSizeBytes 指標將會計算存放於 S3 儲存貯體中以下所有物件儲存類別的資料量 (以位元組為單位):
- S3 Standard
- S3 智慧型分層
- S3 標準 – IA
- S3 單區域 – IA
- S3 低冗餘儲存
- S3 Glacier Deep Archive
- S3 Glacier
此外,CloudWatch 中的 NumberOfObjects 指標包含存放於儲存貯體中所有儲存類別的物件總數。此值計算儲存貯體中的所有物件(當前和非當前),以及任何不完整的分段上傳部分的總數。NumberoFbjects 指標還會計算儲存貯體中所有物件版本的物件總數。例如,如果您有同一物件的兩個版本,則會將這兩個版本計算為兩個單獨的物件。如需詳細資訊,請參閲指標和維度。
使用 AWS CLI 進行每日儲存計算
若要使用 AWS CLI 計算 Amazon S3 的儲存指標,應使用以下命令語法:
aws s3 ls --summarize --human-readable --recursive s3://bucketname | grep -i total
此命令語法計算 Amazon S3 儲存貯體中物件的總數和大小。但應注意的是,只會計算存放在儲存貯體中的每個物件的當前版本(及其大小)。每個物件的分段上傳、刪除標記和非當前版本不會計入總儲存貯體大小或物件總數中。
不完整的分段上傳
若要檢閱不完整的分段上傳清單,請執行 list-multipart-uploads 命令:
aws s3api list-multipart-uploads --bucket <bucket-example>
然後,使用 list-parts 命令和 UploadId 值列出分段上傳中的所有物件:
aws s3api list-parts --bucket <bucket-example> --key large_test_file --upload-id <examplevalue>
建立生命週期規則
若要自動刪除分段上傳,應建立生命週期組態規則。按照以下步驟操作:
1. 開啟 Amazon S3 主控台。
2. 選擇 Management (管理) 標籤。
3. 選擇 Create new policy (建立新政策)。
4. 新增政策的名稱。
5. 選擇 Select - Delete expired delete markers or incomplete multipart uploads (選取 - 刪除過期的刪除標記或不完整的分段上傳)。
6. (可選) 如果您的儲存貯體未經過版本控制,可選擇 Delete incomplete multipart uploads (刪除不完整的分段上傳)。
物件版本控制
若要檢閱和稽核您的 Amazon S3 儲存貯體以檢視不同版本的物件,請使用 Amazon S3 清查清單。Amazon S3 清查清單檔案包含來源儲存貯體中的物件清單以及每個物件的中繼資料。清查清單檔案會擷取中繼資料,例如儲存貯體名稱、物件大小、儲存類別和版本 ID。
相關資訊
範例 8:中止分段上傳的生命週期組態
即將過期的物件