DynamoDB updateItem失败

时间:2015-12-18 13:29:45

标签: amazon-web-services amazon-dynamodb aws-lambda

尝试创建Lambda以从Kinesis流更新DynamoDB。这是我的更新声明:

var response = dd.updateItem({
            'Key': {'S': payload.identityId},
            'TableName': 'Users',
            'UpdateExpression': 'SET testVal = :testVal',
            'ExpressionAttributeValues': {
                ':testVal': {'S': 'This is a test'}
           }
}

这会生成47条错误消息:

  • InvalidParameterType:预期的params.Key [' S']为结构

  • UnexpectedParameter:意外的键' 0'发现于params.Key [' S']

  • UnexpectedParameter:意外的密钥' 1'发现于params.Key [' S']
  • UnexpectedParameter:意外的键' 2'发现于params.Key [' S']
  • UnexpectedParameter:意外的密钥' 3'发现于params.Key [' S']

...

  • UnexpectedParameter:意外的键' 44'发现于params.Key [' S']
  • UnexpectedParameter:意外的密钥' 45'发现于params.Key [' S']"}

Users表存在且当前为空。我已经双重检查了identityID是否存在(并且是有效的)。谁能看到我在这里做错了什么?

1 个答案:

答案 0 :(得分:6)

想出来了。有时只是发布问题会让你以不同的方式思考它!

我没有正确传递Key

dd.updateItem({
            'Key': {
                'hashAttributeName': {
                    'S': payload.identityId
                }
            },
            'TableName': 'Users',
            'UpdateExpression': 'SET testVal = :testVal',
            'ExpressionAttributeValues': {
                ':testVal': {'S': 'This is a test'}
            }
        }