我在比較 Amazon Simple Storage Service (Amazon S3) 主控台中的「計算大小總計」、Amazon CloudWatch 中的每日儲存貯體儲存,以及 Amazon S3 Storage Lens 中的「儲存總計」。我看到這些指標之間存在差異。
簡短說明
當您看到此差異時,請確認下列情況:
- 您已開啟物件版本控制。
**注意:**Amazon S3 中的物件版本控制功能會在儲存貯體中保留物件的多個版本。Amazon S3 物件版本控制預設會在儲存貯體上關閉,並且您必須明確開啟此功能。
- 有未完成的分段上傳。
**注意:**未完成分段上傳不會顯示在 Amazon S3 主控台中,但會當作 CloudWatch 和 Storage Lens 指標中的部分儲存計算。
若要識別報告差異的原因,請檢查您是否已開啟物件版本控制。此外,請查看儲存貯體中的任何分段上傳。這兩項要素可能會導致 CloudWatch 中計算得出的儲存貯體大小和 S3 Storage Lens 儲存總計指標的值增加。在 Amazon S3 主控台中計算物件的大小總計時,這些因數不適用。如需詳細資訊,請參閱 CloudWatch 中儲存貯體的 Amazon S3 每日儲存指標。
**提示:**如果 Amazon S3 中存在未完成分段上傳,則考慮建立生命週期組態規則。此生命週期組態規則會自動清除任何未完成部分,以降低資料儲存成本。請注意,生命週期規則會以非同步方式運作,因此,作業可能會延遲。然而,物件一旦標示為刪除,您就不會再為儲存付費 (即使物件尚未移除)。
請注意,Amazon S3 監控指標每天會記錄一次。因此,這些指標可能不會顯示最近更新的資訊。但是,CloudWatch 會即時監控 AWS 資源和應用程式。此外,S3 主控台和 Storage Lens 使用 base 2 轉換 (/1024) 來報告儲存指標,而 CloudWatch 則預設使用 base 10 轉換 (/1000)。
解決方法
CloudWatch 中的每日儲存指標
在 CloudWatch 中,BucketSizeBytes 指標會擷取所有 Amazon S3 和 Amazon S3 Glacier 儲存類型、物件版本,以及任何未完成分段上傳。依據所有物件大小總和、儲存貯體中的中繼資料 (目前和非目前物件),以及任何未完成分段上傳大小來計算此值。例如,BucketSizeBytes 指標會依據下列所有物件儲存體類別計算儲存在 Amazon S3 儲存貯體中的資料量 (以位元組為單位):
- S3 標準
- S3 Intelligent-Tiering
- S3 標準 – IA
- S3 單區域 – IA
- S3 低冗餘儲存
- S3 Glacier Deep Archive
- S3 Glacier Flexible Retrieval
- S3 Glacier Instant Retrieval
CloudWatch 中的 NumberOfObjects 指標會計算儲存貯體中的下列值:
- 所有儲存體類別中的物件總數。對於具有版本控制的儲存貯體,這包括目前和非目前物件版本以及刪除標記。
- 任何未完成分段上傳的部分總數
例如,如果相同的物件有兩個版本,則會將這兩個版本計為兩個不同的物件。
S3 Storage Lens 儀表板中的「儲存總計」指標
您可以在 S3 Storage Lens 儀表板的儲存貯體索引標籤下,查看儲存總計指標。此指標會擷取儲存總計,包括未完成分段上傳、物件中繼資料,以及刪除標記。若要查看非目前版本、未完成分段上傳,或者刪除標記所佔空間的確切組成,請檢查個別指標:
- 目前版本位元組
- 非目前版本位元組
- 未完成分段上傳位元組
AWS 免費方案中包含這些指標。
此外,物件計數指標包括目前版本和非目前版本、刪除標記,以及未完成分段上傳物件計數等資訊。如需精細層級資訊,請檢查下列指標:
- 目前版本物件計數
- 非目前版本物件計數
- 刪除標記物件計數
- 未完成分段上傳物件計數。
如需詳細資訊,請參閱 Amazon S3 Storage Lens 指標詞彙表。
Amazon S3 主控台中的「計算大小總計」
若要從 Amazon S3 主控台計算儲存貯體大小,您可以使用計算大小總計動作。Amazon S3 隨後會計算儲存貯體的儲存大小。不過請注意,計算儲存貯體大小總計時,不會計入分段上傳,以及之前的版本或非目前版本。Amazon S3 只會計算儲存貯體中儲存的每個物件的目前版本或最新版本的物件總數。例如,如果儲存貯體中有兩個版本的物件,則 Amazon S3 的儲存計算器只會將其計為一個物件。因此,Amazon S3 主控台計算的數目會小於 CloudWatch 報告的數目。
未完成分段上傳
若要檢查未完成分段上傳所佔大小,請檢查 S3 Storage Lens 儀表板儲存貯體索引標籤下的未完成分段上傳項位元組指標。
若要檢閱未完成分段上傳清單,請執行 list-multipart-uploads 命令:
aws s3api list-multipart-uploads --bucket BUCKET_EXAMPLE
**注意:**將 BUCKET_EXAMPLE 替換為儲存貯體名稱。
然後,使用 list-parts 命令和 UploadId 值列出分段上傳中的所有物件:
aws s3api list-parts --bucket BUCKET_EXAMPLE --key large_test_file --upload-id EXAMPLE_VALUE
**注意:**將 BUCKET_EXAMPLE 替換為儲存貯體名稱,並將 EXAMPLE_VALUE 替換為 UploadId 的值。
建立生命週期規則
若要自動刪除分段上傳,可以建立生命週期組態規則:
- 開啟 Amazon S3 主控台。
- 選擇管理索引標籤。
- 選擇建立新政策。
- 新增政策的名稱。
- 選擇選取 - 刪除過期的刪除標記或未完成分段上傳。
- (選用) 如果儲存貯體未建立版本控制,則選擇刪除未完成的分段上傳。
物件版本控制
若要檢閱和稽核 Amazon S3 儲存貯體是否存在不同版本的物件,請使用 Amazon S3 庫存清單。Amazon S3 庫存清單檔案包含來源儲存貯體中的物件清單,以及每個物件的中繼資料。庫存清單檔案會擷取儲存貯體名稱、物件大小、儲存體類別和版本 ID 等中繼資料資訊。若要計算目前版本和非目前版本所佔大小,請分別檢查 S3 Storage Lens 儀表板指標目前版本位元組和非目前版本位元組。
相關資訊
範例 8: 放棄分段上傳的生命週期組態
即將到期的物件
CloudWatch 中儲存貯體的 Amazon S3 每日儲存指標