本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 DynamoDB 中啟用存留時間 (TTL)
注意
為了協助偵錯和驗證TTL功能的正確操作,為項目提供的值TTL會以純文字記錄於 DynamoDB 診斷日誌中。
您可以在 Amazon DynamoDB 主控台、 AWS Command Line Interface (AWS CLI) TTL中啟用 ,或將 Amazon DynamoDB API參考與任何應該的 搭配使用 AWS SDKs。在所有分割區TTL中啟用 大約需要一小時。
登入 AWS Management Console 並在 開啟 DynamoDB 主控台https://console.aws.amazon.com/dynamodb/
。 -
選擇 Tables (資料表),然後選擇您想要修改的資料表。
-
在其他設定索引標籤的存留時間 (TTL) 區段中,選擇開啟以啟用 TTL。
-
在資料表TTL上啟用 時,DynamoDB 會要求您識別服務在判斷項目是否符合過期資格時將尋找的特定屬性名稱。如下所示的TTL屬性名稱區分大小寫,且必須符合讀取和寫入操作中定義的屬性。不相符會導致過期項目取消刪除。重新命名 TTL 屬性需要您停用,TTL然後以新的屬性重新啟用。TTL 停用後, 會繼續處理刪除約 30 分鐘。TTL 必須在還原的資料表上重新設定。
-
(選用) 您可以模擬過期的日期和時間並比對幾個項目,以執行測試。這為您提供項目的範例清單,並確認有項目包含隨到期時間提供的TTL屬性名稱。
TTL 啟用 後,當您在 DynamoDB 主控台上檢視項目TTL時,會標記 TTL 屬性。您可以將滑鼠游標懸停到屬性上,來檢視項目過期的日期和時間。
-
在
TTLExample
資料表TTL上啟用 。aws dynamodb update-time-to-live --table-name TTLExample --time-to-live-specification "Enabled=true, AttributeName=ttl"
-
在
TTLExample
資料表TTL上描述 。aws dynamodb describe-time-to-live --table-name TTLExample { "TimeToLiveDescription": { "AttributeName": "ttl", "TimeToLiveStatus": "ENABLED" } }
-
使用 BASH shell 和 將項目新增至具有存留時間屬性集的
TTLExample
資料表 AWS CLI。EXP=`date -d '+5 days' +%s` aws dynamodb put-item --table-name "TTLExample" --item '{"id": {"N": "1"}, "ttl": {"N": "'$EXP'"}}'
此範例建立的過期時間為從目前的日期開始加 5 天。然後,將過期時間轉換成 Epoch 時間格式,最終將項目新增到 "TTLExample
" 表。
注意
設定存留時間過期數值的其中一種方式,是計算要新增到過期時間的秒數。例如,5 天等於 432,000 秒。但是通常建議從日期開始操作。
取得目前時間的 Epoch 時間格式非常容易,如以下範例所示。
-
Linux 終端機:
date +%s
-
Python:
import time; int(time.time())
-
Java:
System.currentTimeMillis() / 1000L
-
JavaScript:
Math.floor(Date.now() / 1000)
AWSTemplateFormatVersion: "2010-09-09" Resources: TTLExampleTable: Type: AWS::DynamoDB::Table Description: "A DynamoDB table with TTL Specification enabled" Properties: AttributeDefinitions: - AttributeName: "Album" AttributeType: "S" - AttributeName: "Artist" AttributeType: "S" KeySchema: - AttributeName: "Album" KeyType: "HASH" - AttributeName: "Artist" KeyType: "RANGE" ProvisionedThroughput: ReadCapacityUnits: "5" WriteCapacityUnits: "5" TimeToLiveSpecification: AttributeName: "TTLExampleAttribute" Enabled: true
有關在 AWS CloudFormation 範本TTL中使用 的其他詳細資訊,請參閱此處 。