在 DynamoDB 中启用生存时间(TTL)
注意
为了协助调试 TTL 功能和验证该功能是否正常运行,为项目 TTL 提供的值将以纯文本形式记录在 DynamoDB 诊断日志中。
您可以在 Amazon DynamoDB 控制台中,在 Amazon Command Line Interface(Amazon CLI)中,或者对于任何支持的 Amazon SDK 使用 Amazon DynamoDB API 参考,来启用 TTL。在所有分区中启用 TTL 大约需要一个小时。
登录 Amazon Web Services Management Console,打开 DynamoDB 控制台:https://console.aws.amazon.com/dynamodb/
。 -
选择表,然后选择您要修改的表。
-
在其它设置选项卡的生存时间(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
设置生存时间属性将项目添加至 Amazon CLI 表。EXP=`date -d '+5 days' +%s` aws dynamodb put-item --table-name "TTLExample" --item '{"id": {"N": "1"}, "ttl": {"N": "'$EXP'"}}'
此示例从当前日期开始,并在当前日期上增加 5 天来创建过期时间。然后,它将过期时间转换为纪元时间格式,以便最终添加项目到“TTLExample
”表。
注意
为生存时间设置过期值的一种方式是计算添加到过期时间的秒数。例如,5 天是 432000 秒。但是,人们通常习惯于从某个日期算起。
获取当前时间的纪元时间格式非常简单,如下例中所示。
-
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
可以在此处找到有关在 Amazon CloudFormation 模板中使用 TTL 的更多详细信息。