如何设置 dynamodb 项目的生存时间

Vin*_*eet 0 amazon-web-services amazon-dynamodb boto3

我正在尝试批量添加 dynamodb 中的项目。我的表由复合主键组成,即主键和排序键的组合。我已在我的表上启用time to live,但指标显示deletedItemsCount没有变化。

以下是我的代码:-

def generate_item(data):
    item = {
        "pk": data['pk'],
        "ttl": str(int(time.time())), # current time set for testing
        "data": json.dumps({"data": data}),
        "sk": data['sk']
    }

    return item

def put_input_data(input_data, table_name):
    dynamodb = boto3.resource('dynamodb')
    table = dynamodb.Table(table_name)

    data_list = input_data["data"]

    try:
        with table.batch_writer() as writer:
            for index, data in enumerate(data_list):
                writer.put_item(Item=generate_item(data))
    except ClientError as exception_message:
        raise

Run Code Online (Sandbox Code Playgroud)

在查询表时,我可以看到项目已添加到表中,但图表显示deletedItemsCount没有变化。

有人能指出我哪里出错了吗?将不胜感激任何提示。

谢谢

小智 5

看起来你的 ttl 属性是一个字符串,但是......

\n
\n

TTL 属性\xe2\x80\x99s 值必须是数字数据类型。例如,如果您指定表使用属性名称 expdate 作为 TTL 属性,但某个项目的属性是字符串数据类型,则 TTL 进程会忽略该项目。

\n
\n

来源: https: //docs.aws.amazon.com/amazondynamodb/latest/developerguide/time-to-live-ttl-before-you-start.html#time-to-live-ttl-before-you-start-格式化

\n

希望能解决您的问题。

\n