Python Boto3 AWS DynamoDB从表中获取项,不带排序键

Python Boto3 AWS DynamoDB从表中获取项,不带排序键,python,amazon-web-services,lambda,amazon-dynamodb,boto3,Python,Amazon Web Services,Lambda,Amazon Dynamodb,Boto3,我试图从AWS Lambda函数更新DynamoDb表中的一项,但出现以下错误: “errorMessage”:“调用UpdateItem操作时发生错误(ValidationException):提供的键元素与架构不匹配” 我在定义表时没有定义排序键,我的分区键名为“pipeId”,我使用了以下代码: dynamodb = boto3.resource('dynamodb') table = dynamodb.Table('mytable') response = table.update_i

我试图从AWS Lambda函数更新DynamoDb表中的一项,但出现以下错误:

“errorMessage”:“调用UpdateItem操作时发生错误(ValidationException):提供的键元素与架构不匹配”

我在定义表时没有定义排序键,我的分区键名为“pipeId”,我使用了以下代码:

dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('mytable')

response = table.update_item(
    Key={
        'pipeId': pipe_id
        },
    UpdateExpression="set hookId = :r",
    ExpressionAttributeValues={
            ':r': hook_id
        },
    ReturnValues="UPDATED_NEW"
)

如果事先未设置排序键,则无法获取或更新项目?还是我做错了什么?

我找到了解决办法


问题是,我的主键被定义为数字,而我将它作为字符串插入,如“3219”;但是它不会自动转换。

我在错误消息中没有看到任何关于排序键的信息,所以不确定您为什么要关注它。这意味着
pipeId
实际上不是表的主键。你确定这不是
PipeID
PipeID
之类的吗?我之所以关注这一点,是因为我看到许多其他主题指出这个错误是因为他们提供了不完整的密钥;是的,我使用了正确的表名@谢谢你,谢谢。该死的Dynomodby我们的解决方案对我有用,谢谢你的提问