Troposphere DynamoDB 生存时间规范

Troposphere DynamoDB TimeToLiveSpecification

我正在尝试为新的 DynamoDB table 创建 JSON Cloudformation 模板。我正在尝试设置 TimeToLiveSpecification,但出现错误并且对流层文档不清楚。

我有

dynamoDB = t.add_resource(Table(
    "myDynamoTable",
    TableName=Join("-", [Ref(env), "dynamo-table"]),
    AttributeDefinitions=[
        AttributeDefinition(
            AttributeName=Ref(hashkeyname),
            AttributeType=Ref(hashkeytype)
        ),
        AttributeDefinition(
            AttributeName="sqsMessageId",
            AttributeType="S"
        ),
        AttributeDefinition(
            AttributeName="system",
            AttributeType="S"
        ),`enter code here`
        AttributeDefinition(
            AttributeName=Ref(sortkeyname),
            AttributeType=Ref(sortkeytype)
        ),
        AttributeDefinition(
            AttributeName="text",
            AttributeType="S"
        ),
        AttributeDefinition(
            AttributeName="ttl",
            AttributeType="N"
        )
    ],
    KeySchema=[
        KeySchema(
            AttributeName=Ref(hashkeyname),
            KeyType="HASH"
        ),
        KeySchema(
            AttributeName=Ref(sortkeyname),
            KeyType="RANGE"
        )
    ],
    TimeToLiveSpecification="WHAT GOES HERE???"
))

我什至尝试过将它按原样格式 JSON 放入,但它不起作用。 我试过:

TimeToLiveSpecification=AWSProperty(AttributeName="ttl", Enabled=True)

TimeToLiveSpecification=AttributeDefinition(AttributeName="ttl", Enabled=True)

TimeToLiveSpecification=TimeToLiveSchema(AttributeName="ttl", Enabled=True)(用这个抓住救命稻草)。

使用显示的 TimeToLiveSpecification 试试这个(未经测试)here

TimeToLiveSpecification=TimeToLiveSpecification(
    AttributeName="fill this in",
    Enabled=True,
),

最后我去了

ttlspec = t.add_resource(TimeToLiveSpecification(
    "ttlspec",
    AttributeName="ttl",
    Enabled=True
))

然后

dynamoDB = t.add_resource(Table(
    "myDynamoTable",
    TableName=Join("-", [Ref(env), "dynamo-table"]),
    AttributeDefinitions=[
        AttributeDefinition(
            AttributeName=Ref(hashkeyname),
            AttributeType=Ref(hashkeytype)
        ),
        AttributeDefinition(
            AttributeName="sqsMessageId",
            AttributeType="S"
        ),
        AttributeDefinition(
            AttributeName="system",
            AttributeType="S"
        ),`enter code here`
        AttributeDefinition(
            AttributeName=Ref(sortkeyname),
            AttributeType=Ref(sortkeytype)
        ),
        AttributeDefinition(
            AttributeName="text",
            AttributeType="S"
        ),
        AttributeDefinition(
            AttributeName="ttl",
            AttributeType="N"
        )
    ],
    KeySchema=[
        KeySchema(
            AttributeName=Ref(hashkeyname),
            KeyType="HASH"
        ),
        KeySchema(
            AttributeName=Ref(sortkeyname),
            KeyType="RANGE"
        )
    ],
    TimeToLiveSpecification=Ref(ttlspec)
))

TimeToLiveSpecification 是一个 Class,需要在顶部导入。 Docs here.