Cost saving for Amazon Athena query results on Amazon S3 and working delete marker

2022-09-27 AWS

前陣子和客戶討論帳單費用時,提到在逐月增加的 Amazon S3 費用覺得很困擾,快速透過 Amazon S3 的 Storage Lens 先找到是否有逐漸成長的 Bucket。如下示意圖;Storage Lens 可以很快速的找到在 AWS Organization 和 Account 底下所有 Top N region/account/bucket 的使用狀況,最右邊還有 usage metric 一目瞭然。

在客戶的案例中找到一座 bucket 是存放 Amazon Athena 查詢結果的 bucket,才發現在當月他們的團隊使用了大量 Athena 查詢資料,但次每次 query result 都會儲存在 Amazon S3 逐漸導致費用增加。

Amazon Athena 是很常見用來撈存放在 Amazon S3 的服務之一,尤其是使用 DataLake 的概念以及 QuickSight 等整合之後,Athena 就很容易產生大量的 query log 並且累積不少的費用,如果 query log 並沒有需要長期保存而 Amazon S3 lifecycle configuration rule 絕對是你最好的朋友!透過設定 lifecycle rule 定期清理 Athena 產生的 query log 替 Amazon S3 減減肥。

AWS 官方文件「How do I empty an Amazon S3 bucket using a lifecycle configuration rule?」提供清楚的教學,文中提到要設定 2 條 lifecycle configuration rule:

第一條 rule 將 object 設定超過 1 天就刪除、或標記為刪除

  • Expire current versions of objects : “1” day
  • Permanently delete noncurrent versions of objects
    • Days after objects become noncurrent : “1” day
  • Delete expired object delete markers or incomplete multipart uploads
    • Delete incomplete multipart uploads : “1” day

第二條 rule 針對開啟版本控管 (Bucket Versioning) 的 bucket 刪除 delete marker 標記的 object

如上圖;當 bucket versioning 開啟時刪除 object 僅是加上 Delete Marker 而不是真正刪除 object,雖然標記為 delete marker 後 AWS 並不會針對 object 儲存收費,但是在 S3 GetObject 的操作體驗上會有 404 No Object Found 的狀況。

加上這兩條 rules 後,隔天再查看就會發現 Amazon S3 幫你刪掉了所有過期 1 天的 object,未來也不用擔心 Athena 產生的大量 objects。

即使沒有長期使用 Athena 的服務,但是偶爾對 Amazon S3 的清理也是財務管理的一環!

給 Mr. 沙先生一點建議

彙整

分類

展開全部 | 收合全部

License

訂閱 Mr. 沙先生 的文章

輸入你的 email 用於訂閱