我正在努力在AWS Lambda中设置Python函数来更新DynamoDB中的简单计数器表。每次运行该函数时,它都应将计数器更新为1。我希望使用“原子计数器”功能,但是我目前不断遇到以下错误: 无效的UpdateExpression:运算符或函数的操作数类型错误;运算符或函数:+,操作数类型:M“
我的DynamoDB表只有两个字段:SiteURL(分区键)和Site(我希望随着每次更新增加的数字)
这是代码-关于我所缺少的任何想法?
import decimal
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('resumecounter')
response = table.update_item(
Key = {'SiteURL': 'https://website.com', 'Site': 'N'},
ExpressionAttributeNames = {'#Site': 'Site'},
ExpressionAttributeValues = {':increase': {'N': '1'},},
UpdateExpression = "set site = site + :increase",
ReturnValues="UPDATED_NEW"
)
print("UPDATING ITEM")
print(response)
答案 0 :(得分:1)
我修复了一些问题,包括搜索键和属性值。我已经在我的环境中对其进行了测试,这应该可以工作。
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('resumecounter')
response = table.update_item(
Key={'SiteURL': 'https://website.com'},
ExpressionAttributeValues={':increase': 1},
UpdateExpression="set site = site + :increase",
ReturnValues="UPDATED_NEW"
)
print("UPDATING ITEM")
print(response)