翻转的 DynamoDB 原子计数器

DynamoDB atomic counter that rolls over

我想要一个原子计数器,当它达到某个位置(键)的阈值时,它会重置回 1。 我可以毫无问题地递增,但如果可能的话,我希望它在翻转时是原子的。

CF 有:

    "TicketNumberTable": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [
          {
            "AttributeName": "location",
            "AttributeType": "S"
          }
        ],
        "KeySchema": [
          {
            "AttributeName": "location",
            "KeyType": "HASH"
          }
        ],
        "BillingMode": "PAY_PER_REQUEST",
        "TableName": { "Fn::Join": [ "", [ "ticketnumber", { "Ref": "env" } ] ] }
      }
    }

如果计数器超过 100(例如),我将如何在此更新调用中添加滚动到 1?

目前我的代码是:

  const params = {
    TableName: process.env.TICKET_NUMBER_TABLE,
    Key: {
      'location': {
        'S': 'somewhere'
      }
    },
    UpdateExpression: 'ADD #counter :inc',
    ExpressionAttributeNames: {
      '#counter': 'counter'
    },
    ExpressionAttributeValues: { 
      ':inc': {
        'N': '1'
      }
    },
    ReturnValues: 'UPDATED_NEW'
  }

我觉得没有办法。也许只是将该值视为跟踪值 mod 100。:)