首页 > 解决方案 > AWS DynamoDB 使用 Python/Boto3/Lamba 更新整数计数器

问题描述

我有一个带有整数值的 DynamoDB 表,需要使用 Python/Boto3/AWS-Lambda 环境递增。

userMetrics
{
  "userid": 1234567890,
  "likemetrics": 0,
  "lasttimestamp": 1604553995
}

我正在尝试使用原子增量方法dynamodb 来增加 likemetrics 整数计数器:如何增加 map 中的值,但在测试期间失败。

   responseupd = dydb_usertable.update_item(
        Key = {
            'userid': 1234567890
        },
        ExpressionAttributeValues: { ":inc": {N: "1"} },
        UpdateExpression: "ADD likemetrics :inc"
        })

控制台抛出的错误是

{
  "errorMessage": "Syntax error in module 'lambda_function': unindent does not match any outer indentation level (lambda_function.py, line 34)",
  "errorType": "Runtime.UserCodeSyntaxError",
  "stackTrace": [
    "  File \"/var/task/lambda_function.py\" Line 34\n           responseupd = dydb_usertable.update_item(\n"
  ]
}

标签: pythonaws-lambdaamazon-dynamodbboto3

解决方案


请仔细查看此处的文档:

您正在使用混合的 Javascript 和 Python 语法。应更正如下:

dydb_usertable.update_item(
    Key = {
        'userid': {
            'N': 1234567890
        }
    },
    ExpressionAttributeValues = { ":inc": {"N": "1"} },
    UpdateExpression = "ADD likemetrics :inc"
})

推荐阅读