本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
GAMESUS01-BP02 使用生命週期政策或 TTL 過期來刪除不必要的遊戲使用者資料、日誌檔案或已棄用資產
您可以使用標籤和資料類型來建立生命週期政策或 TTL 的 ,將資料移至封存儲存或從服務中完全移除。這可能包括暫時組態、過期的封存內容,以及不再需要的歷史日誌。大多數 服務都支援標記。
未建立此最佳實務時的曝險等級:高
實作指引
對於存放在 S3 中的資料,您可以使用生命週期政策將資料移至不常存取和封存的儲存層。您可於 S3 生命週期組態中,定義將物件從一個儲存類別轉換為另一個儲存類別的規則,並存於儲存體成本。當您不清楚物件的存取模式時,或如果您的存取模式會隨時間變更,您可以將物件轉換為 S3 Intelligent-Tiering 儲存類別,自動節省成本。
Amazon S3 支援瀑布模型以在儲存類別間轉換,如下圖所示。
您可以將轉換動作新增至 S3 生命週期組態,以指示 Amazon S3 在物件的生命週期結束時刪除物件。當物件根據其生命週期組態達到其生命週期結束時,Amazon S3 會根據儲存貯體所在的 S3 版本控制狀態採取過期動作:
-
非版本控制的儲存貯體:Amazon S3 會將物件排入佇列以進行移除,並以非同步方式將其移除,永久移除物件。
-
啟用版本控制的儲存貯體:如果目前的物件版本不是刪除標記,Amazon S3 會新增具有唯一版本 ID 的刪除標記。如此會讓目前的版本成為非目前的版本,而刪除標記成為目前版本。
-
暫停版本控制儲存貯體:Amazon S3 會建立刪除標記,並以 null 做為版本 ID。此刪除標記會將物件版本取代為版本階層中的 null 版本 ID,以有效地刪除物件。
-
當您新增儲存貯體的生命週期組態時,組態規則會套用至現有物件以及稍後新增的物件。例如,如果您今天使用過期動作新增生命週期組態規則,導致具有特定字首的物件在建立 30 天後過期,Amazon S3 將排入佇列,以移除超過 30 天且具有指定字首的現有物件。
DynamoDB 的存留時間 (TTL) 功能是一種具成本效益的方法,可用於刪除不再需要的項目。TTL 可讓您為每個項目定義過期時間戳記,以標示該項目何時不再需要。DynamoDB 會在項目過期後的幾天內自動刪除它們,且不會耗用寫入輸送量。
-
若要使用 TTL,請先在資料表中啟用該功能,接著定義一個屬性以儲存 TTL 過期時間戳記。時間戳記必須以秒為單位,並採用 Unix epoch 時間格式
進行儲存。每次建立或更新項目時,您可計算其過期時間,並將結果儲存在 TTL 屬性中。 -
具有有效、過期 TTL 屬性的項目可能會被系統刪除,通常是在過期後的幾天內。您仍可更新尚未刪除的過期項目,例如變更或移除其 TTL 屬性。在更新過期項目時,建議使用條件運算式,以確保該項目未在此期間被刪除。使用篩選運算式,從掃描與查詢結果中排除過期項目。
-
被刪除的項目運作方式與一般刪除操作所刪除的項目相同。刪除後,項目會以服務刪除的形式進入 DynamoDB Streams,而不是使用者刪除,並從本機次要索引和全域次要索引中移除,就像其他刪除操作一樣。
使用 ElastiCache for Redis,您可以使用 TTLs 或快取金鑰上的過期來控制快取資料的新鮮度。設定時間 過後,金鑰會從快取中刪除,而且需要存取原始伺服器資料存放區,才能到達更新的資料。
-
兩個原則會決定要套用的適當 TTLs,以及要實作的快取模式類型。首先,請務必了解基礎資料的變更率。其次,請務必評估將過期資料傳回至應用程式的風險,而非其更新的複本。
-
使用經常變更的動態資料,您可能想要套用較低的 TTLs,以與主要資料庫相符的變更率來使資料過期。這可降低傳回過時資料的風險,同時仍提供緩衝來卸載資料庫請求。
-
也請務必了解,即使您只快取資料幾分鐘或幾秒鐘,相較於更長的持續時間,適當地將 TTLs到快取的金鑰也可能會導致效能提升,以及遊戲的整體更佳玩家體驗。
實作步驟
-
使用 Amazon S3 生命週期政策將物件轉換為不常存取或封存層,並設定過期動作,根據生命週期規則刪除不必要的物件。
-
在 DynamoDB 資料表中啟用存留時間 (TTL),以在不使用寫入輸送量的情況下自動刪除過期項目,並以 Unix epoch 時間定義過期時間戳記。
-
根據資料變更率和過時資料的風險承受能力,為 ElastiCache 金鑰設定適當的 TTLs,促進快取資料更新並改善玩家體驗。